.split
Archives Forums/BlitzMax Bug Reports/.split| 
 | ||
| Sorry if asked before etc. etc. Print Len("1;2;3;".split(";")) I expected 3, not 4. Yes, I can easily wipe the last ; .. but, dunno.. I expected 3, not 4. :) It would be more consistent, somehow. Think of script parsing where you make a consistency agreement to close each command with a semi colon. How about a check whether the last separator is followed by something or nothing? (max 1.34) | 
| 
 | ||
| I prefer 4 here... It might be sometimes handy if it strips last null string for you. But what if the null part is important for someone else? :) | 
| 
 | ||
| Then, what about: Print Len("1;2;3;".split(";",1)) where the ,1 means something like: "string ends with separator" | 
| 
 | ||
| I find it more useful to have an empty string on the end for my purposes, so I suppose it's more useful to have extra information you can get rid of instead of dropping the empty string. Just write a little function to get it to do what you want, because the built-in split function's never going to change: 
Function numbits(str$,separator$)
	Local bits$[]=str.split(separator)
	If bits[Len(bits)-1]=""
		Return Len(bits)-1
	Else
		Return Len(bits)
	EndIf
End Function
Print numbits("2;3;4;",";")
Print numbits("2;2;4",";")
 | 
| 
 | ||
| It seems to work exactly how I would expect it to. The result should always be "number of separators + 1". | 
| 
 | ||
| Or, if you don't ever want the ending element, just call a function on the array every time you split a string that removes the last Null element. | 
| 
 | ||
| Or: 
Function trimarray$[](arr$[])
	n=Len(arr)
	start=0
	finish=n-1
	While start<n And (Not arr[start])
		start:+1
	Wend
	While finish>0 And (Not arr[finish])
		finish:-1
	Wend
	Return arr[start..finish+1]
End Function
Print ",".join(trimarray(";1;;2;".split(";")))
 | 
| 
 | ||
| Yes, or all of them. | 
| 
 | ||
|  How about a check whether the last separator is followed by something or nothing? If it is a separator then it has to be followed by something. And the empty string is a valid string, so what appears to be nothing is in fact an empty string. | 
| 
 | ||
| Like what Floyd said. | 
| 
 | ||
| Current usage works for me. Actually it'd scupper my game proper if Mark changed its functionality, as I use the Split() method loads. |