_TITLE "Find numbers in text" 'b+ 2019-11-08 'a slighty different approach
s$(0) = "Sub NumFromString return all numbers 45 from -3.14 this 000 string to 1234567890, .65, 0.001, -0.0021 array7"
s$(1) = "You can reach me at +22.17 degrees latitude, -44.96 degrees"
s$(2) = "I use -5 and 0.0001, 34, 3.19216457E-46, -9, 00.00.00, -4.987651223847D+49, 12:32:59, 11/09/2019"
PRINT "For Text string = "; s$
(i
) replace1for1 s$(i), ",", " "
PRINT "Replace commas for spaces: "; s$
(i
) Split s$(i), " ", wrds$()
PRINT "press any to wakeup next..."
SUB replace1for1
(s$
, char1$
, new1$
) p
= INSTR(p
+ 1, s$
, char1$
)
c$ = s$ 'make a copy of s$ because will tear it up
'has at most 1 decimal point
'neg at right of E or D or + immediate right of E or D
'neg at start
'all other chars are digits
'maybe + too at start would be OK
c$
= MID$(c$
, 1, p
- 1) + MID$(c$
, p
+ 1) 'get rid of decimal 'PRINT "After decimal = "; c$
c$
= MID$(c$
, 1, p
- 1) + MID$(c$
, p
+ 2) 'get rid of E+ or E- 'PRINT "After E fix = "; c$
c$
= MID$(c$
, 1, p
- 1) + MID$(c$
, p
+ 2) 'get rid of D+ or D- 'PRINT "After D fix = "; c$
c$
= MID$(c$
, 1, p
- 1) + MID$(c$
, p
+ 1) 'get rid of - 'PRINT "After - = "; c$
c$
= MID$(c$
, 1, p
- 1) + MID$(c$
, p
+ 1) 'get rid of - 'PRINT "After + = "; c$
'all the rest better be digits
IsNumber% = -1
curpos
= 1: arrpos
= LBOUND(loadMeArray
): LD
= LEN(delim
) dpos
= INSTR(curpos
, SplitMeString
, delim
) loadMeArray
(arrpos
) = MID$(SplitMeString
, curpos
, dpos
- curpos
) arrpos = arrpos + 1
curpos = dpos + LD
dpos
= INSTR(curpos
, SplitMeString
, delim
) loadMeArray
(arrpos
) = MID$(SplitMeString
, curpos
)