Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 252
  • Last Modified:

Fox 9 searching string

I am writing some code which will require me to validate a character string.
Two things need to be done.
1) Verify the number of charatcers in a string
2) Verify that a certain position is a letter rather than a number

example:
12345x7890

Verifiy that there are ten characters in the string and that the 6th one is a letter rather than a number.

I can do this  with the Substr(str,x,y) etc   function  just wondered if anyone knew of a more elegant way .

Thank You
D


0
Malibucompany
Asked:
Malibucompany
  • 3
  • 3
6 Solutions
 
pcelbaCommented:
More elegant could be Regular expression test but it is also very slow and not necessary in this case.
See http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,91241006-595a-487d-ac06-d0fc1fc71632.aspx
http://fox.wikis.com/wc.dll?Wiki~RegExp

The old and good SUBSTR() is also fast, readable, and fully functional.

lcStr = "12345x7890"
IF LEN(lcStr) = 10 AND ISALPHA(SUBSTR(lcStr, 6, 1))
  *-- Correct string
ENDIF

0
 
Olaf DoschkeSoftware DeveloperCommented:
Also see IsDigit() for checking the other 9 chars are digits. Or do

lcStr = "12345x7890"
lnExpectedLength = 10
lnCheckPositionOfAlpha = 6

lcChr = ChrTran(lcStr,"0123456789","")
If IsAlpha(lcChr) AND;
   Len(lcStr)=lnExpectedLength AND ;
   Substr(lcStr,lnCheckPositionOfAlpha,1)==lcChr

   * Correct string.
Endif

This is lengthier code, but it also checks all but the one alphabetical char are digits.

Bye, Olaf.
0
 
pcelbaCommented:
Where is the test for digits required in the spec?  :-)
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
Olaf DoschkeSoftware DeveloperCommented:
chrtran() is removing all digits, and digits only. Also substr(...,1)==lcChar checks the single char substr with the string remaining from chrtran,The == exact string match is therefore checking this is only 1 and exactly 1 alphabetical char.

Test for yourself.

Bye, Olaf.
0
 
pcelbaCommented:
Olaf, I understand your code... but thanks for the explanation.

I am just asking Where is the test for digits required in the specification from Malibucompany?  :-)

The question just says "Letter on the 6th place rather than digit" but no info about other string positions exists.
0
 
Olaf DoschkeSoftware DeveloperCommented:
Well, I interpret that all other non alphabetical chars should be digits. That was not explicitly demanded, but it's an implicit interpretation, that follows quite obviously. Malibucompany could clarify that of course.

Bye, Olaf.
0
 
MalibucompanyAuthor Commented:
Perfect !
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now