SA-MP Forums Archive
[HELP] Exploding a string to an array of substrs; PHP-alike explode() in Pawn? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: [HELP] Exploding a string to an array of substrs; PHP-alike explode() in Pawn? (/showthread.php?tid=114830)



[HELP] Exploding a string to an array of substrs; PHP-alike explode() in Pawn? - Kyeno - 21.12.2009

Hi there,

I'm looking for some way of exploding a regular string into an array of substrings.

Like You would do in PHP:
Код:
 $string = "some|string|separated|with|a|char";
 $array = explode('|', $string);

 print_r($array);
And it would produce:
Код:
Array
(
  [0] => some
  [1] => string
  [2] => separated
  [3] => with
  [4] => a
  [5] => char
)
I've read the official Pawn Strings manual and didn't find any exact solution.
Tried googling, bugging friendly developers and still there's not much i discovered.

Tried experimenting for myself, but honestly i'm not yet good enough with Pawn to figure:

Код:
function strexplode(const token[], const string[], stringSize) {

	new result[256][64];  // some test values
	new row = 0;

	for(new i=0; i<stringSize; i++) {

		// get local char
		new chr[256];
		strmid(chr, string, i, i + 1, sizeof(chr));

		// jump to next row
		if(strcmp(chr, token, true, sizeof(chr)) == 0) row++;
		else strcat(result[row], chr, sizeof(chr));
	}
	
	return result;
}
And then:
Код:
 new line[2048] = "some|string|separated|with|a|char";
 new result[256][64];
 result = strexplode("|", line, sizeof(line));

 SendClientMessage(0, 0xFFFFFFAA, result[1]);  // some test fields
But i still get gibberish from that (result[1] is equal to the whole line..)

Any clues?


Additionally i don't even know how to debug such things properly; launching SAMP server & client anytime i want to check if slight changes worked is pretty slow, and somehow Linux samp server doesn't want to print() anything to it's stdout

Thanks in advance for any helpfull clues


Re: [HELP] Exploding a string to an array of substrs; PHP-alike explode() in Pawn? - Kyeno - 21.12.2009

Thanks a lot Seif!
You helped me again

Any clues on the STDOUT debug tho?


Re: [HELP] Exploding a string to an array of substrs; PHP-alike explode() in Pawn? - Marcel - 21.12.2009

Or use sscanf, https://sampwiki.blast.hk/wiki/Sscanf
And here you see how to use it: https://sampwiki.blast.hk/wiki/Fast_Commands#sscanf


Re: [HELP] Exploding a string to an array of substrs; PHP-alike explode() in Pawn? - Kyeno - 21.12.2009

Quote:
Originally Posted by Marcel
Ty for the tip Marcel.
I was told to try sscanf() before, but honestly that's not exactly how i am used to work (as PHP/Ruby/JavaScript programmer).
Westy's strlib and explode() seems perfect