• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. is string a number or not

Stats

  • Replies 4
  • Subscribers 159
  • Views 14327
  • Members are here 0
More Content

is string a number or not

Ejlersen
Ejlersen over 13 years ago

Hi

I've been searching for a funtion to check if a string is a number or not.

stringsamples could be

data="8FLASH"

data="8"

data="8.1"

atoi will return 8 for all of the above, atof will return 8.0 for them all

Anyone know a function to test this?

Best regards

Ole

 

  • Cancel
  • Sign in to reply
  • djhutchi
    djhutchi over 13 years ago
    > procedure( test(arg) if(rexMatchp("^[0-9]*[.]*[0-9]+$" arg) then printf("%s is a number\n" arg) else printf("%s is not a number\n" arg)))

    function test redefined

    test

    > test( "0.2")

    0.2 is a number

    t

    > test("2.0")

    2.0 is a number

    t

    > test( "8")

    8 is a number

    t

    > test("8FLASH")

    8FLASH is not a number

    t

    >
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • eDave
    eDave over 13 years ago
    Hi Ole, There must be a better way but this might help you: defun( StrNumberType (str, "t") when(str != "-" && substring(str, 1, 1) == "-", str = substring(str, 2)) unless(forall(pattern, '("^[0-9]+$", "^[0-9]*.[0-9]+$", "^[0-9]+.[0-9]+e[0-9]+$", "^[0-9]+.[0-9]+e-[0-9]+$"), !rexMatchp(pattern, str)) type(readstring(str)) ) ) Regards, Dave
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • eDave
    eDave over 13 years ago

    Let's try that in ie instead of Chrome:

    defun( StrNumberType (str, "t")
     when(str != "-" && substring(str, 1, 1) == "-", str = substring(str, 2))
     unless(forall(pattern, '("^[0-9]+$", "^[0-9]*.[0-9]+$", "^[0-9]+.[0-9]+e[0-9]+$", "^[0-9]+.[0-9]+e-[0-9]+$"), !rexMatchp(pattern, str))
      type(readstring(str))
     )
    )

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Ejlersen
    Ejlersen over 13 years ago

    Hi Dave

    Looks much better and thanks very much for the answer, although it was down the same road I was looking.

    There's also numberp, but converting a single element string to a symbol does not seem to work well.

    Best regards

    Ole

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information