Solved

# Fox 9  searching string

Posted on 2011-09-06
224 Views
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
Question by:Malibucompany
• 3
• 3

LVL 41

Accepted Solution

pcelba earned 250 total points
More elegant could be Regular expression test but it is also very slow and not necessary in this case.
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

LVL 29

Assisted Solution

Olaf Doschke earned 250 total points
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

LVL 41

Assisted Solution

pcelba earned 250 total points
Where is the test for digits required in the spec?  :-)
0

LVL 29

Assisted Solution

Olaf Doschke earned 250 total points
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

LVL 41

Assisted Solution

pcelba earned 250 total points
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

LVL 29

Assisted Solution

Olaf Doschke earned 250 total points
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

Author Closing Comment

Perfect !
0

## Featured Post

### Suggested Solutions

Microsoft Visual FoxPro (short VFP) is a programming language with it’s own IDE and database, ranking somewhat between Access and VB.NET + SQL Server (Express). Product Description: http://msdn.microsoft.com/en-us/vfoxpro/default.aspx (http://msd…
Scam emails are a huge burden for many businesses. Spotting one is not always easy. Follow our tips to identify if an email you receive is a scam.
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.