Somebody might take this opportunity to time the various solutions. I tend
to think the regex will be slower as well.
On the other hand... the FOR loop isn't terminating early if it finds a hit
and (the request was a bit ambiguous) but it doesn't actually identify if
there is a "9" in it. If the OP meant by citing that example that "it has a
digit" (returning boolean) that's one thing if he wants to know where the
digit(s) are or to retrieve the entire numeric value that would be another.
I'm not going to write it (done that too many times now) but I'd suggest a
while loop that does terminate when a value has been found. And I'd opt for
having the value it found returned (probably in string format) to
accommodate the "not found" response. Somebody might like to consider
handling negative numbers as well. Won't happen on an "inside diameter" of
course but it could in other situations. And perhaps the comma and period
separators as well, as with; "Inside Diameter=8.5"
Tom
Jaap Bos said:
Spam Catcher said:
Hello,
I have a situation that I need to be able to identify if there are
any numerical values in a string variable that might have numerics
including charecters.
For instanse Dim strValue as stirng
strValue = "Inside Diameter=9"
then how to identify the numerical value 9 in it.
Use regular expressions to search for numerics [0-9](1,) (numeric number
1
char or longer)
And if you do not like to use regular expressions something like:
For i As Short = 0 To st.Length - 1
Select Case Asc(st.Substring(i, 1))
Case 48 To 57
'This is a numeric value
End Select
Next
will also work.
Groeten,
Jaap