Changing "1,2,3" into an Int array

BlitzMax Forums/BlitzMax Beginners Area/Changing "1,2,3" into an Int array

Chroma(Posted 2008) [#1]
What I'm trying to do is take a string of numbers:
mynum$ = "1,2,3,4,5"


and change it directly into an Int array like this:
myarray:Int[] = [1,2,3,4,5]



SebHoll(Posted 2008) [#2]
What about a function like:

Local tmpString$ = "1,2,3,4,5"
Local myArray:Int[] = StringToIntArray(tmpString)

For Local tmpNum% = EachIn myArray
	Print "> " + tmpNum
Next

Function StringToIntArray%[]( pString$, pSeparator$ = "," )
	
	Local tmpIntArray%[], tmpStringArray$[] = pString.Split(pSeparator)
	
	For Local tmpString$ = EachIn tmpStringArray
		tmpIntArray:+[Int(tmpString)]
	Next
	
	Return tmpIntArray
	
EndFunction
Should hopefully speak for itself...


tonyg(Posted 2008) [#3]
SuperStrict
Local mynum:String="1,2,3,4,5"

Local outstring:String[]=mynum.split(",")
Local myarray:Int[outstring.length]
For Local x:Int=0 To outstring.length-1
    myarray[x]=Int(outstring[x])
	Print myarray[x]
Next



Chroma(Posted 2008) [#4]
Very nice thx.


Chroma(Posted 2008) [#5]
Small problem with yours tonyg...there's 5 numbers but the length of myarray ends up being 4. Just has to take out the "-1" on this line:

Local myarray:Int[outstring.length-1]


Here's my final version and thanks to you both:
Local array%[] = StrToIntArray("1,2,3,4,5")

For i = 0 To array.length-1
	Print array[i]
Next

End

Function StrToIntArray%[](str$, sep$=",")
	Local strArray$[] = str.split(sep)
	Local intArray%[strArray.length]
	For Local i:Int = 0 To strArray.length-1
		intArray[i] = Int(strArray[i])
	Next
	Return intArray
End Function



tonyg(Posted 2008) [#6]
Noticed that and edited it... but not in time obviously.