Code: Select all
Procedure IsNumber(String$)
a$=Trim(UCase(String$))
If a$=""
ProcedureReturn 0
EndIf
number.l
mantissa.l=0
start.l=1
char$=Mid(a$,1,1)
If ((char$="+") Or (char$="-"))
start=2
If start>Len(a$)
ProcedureReturn 0
EndIf
EndIf
Repeat
If start>Len(a$)
Break
EndIf
char$=Mid(a$,start,1)
start+1
number=FindString("1234567890",char$,1)
mantissa+1
Until number=0
If mantissa<2
ProcedureReturn 0
EndIf
If (start-1)<Len(a$)
If char$="."
Repeat
If start>Len(a$)
Break
EndIf
char$=Mid(a$,start,1)
start+1
number=FindString("1234567890",char$,1)
Until number=0
EndIf
EndIf
If (start-1)<Len(a$)
If char$="E"
char$=Mid(a$,start,1)
If ((char$="+") Or (char$="-"))
start+1
EndIf
Repeat
If start>Len(a$)
Break
EndIf
char$=Mid(a$,start,1)
start+1
number=FindString("1234567890",char$,1)
Until number=0
EndIf
EndIf
If ((start-1)=Len(a$) And (number>0))
number=1
EndIf
ProcedureReturn number
EndProcedure
Debug IsNumber(" -0.123456789e-7 ")
Debug IsNumber("e-7")