Emulare la Split del VB6 in .NET

Il problema:

Rececente in un progetto recente mi sorta la necissita di dividere una stringa del tipo "120x0x100x0x7x0x17x0x35x0x100x0x120" in base a "x0x" .Subito rivangado il VB6 ho pensanto di utilizzare il metodo Split di String in questo modo:

string[] s=line.Split(new char[]{'x','0','x'});

Io mi aspettavo che Split mi ritornasse un Array di String cosi formato s{"120","100","7","17","35","100","120"};ma quando sono ando to a verificare l'Array s era cosi formato s{"12","","","","1","","","","","7","","","17","","","35","","","1","","","","","12",""},un risutato totalmente  diverso da quello che mi aspettavo.

Andando a vedere la MSDN la doumentazione del metodo split si nota che separator è una matrice di char che può contere i vari separatori ammisibili pertato come semaratore non era "x0x" ma era 'x' o '0'.

La soluzione:

Per risolvere la situazione ho pensato di effetuare una Replace della sequenza "x0x" con un carattere e successivamente effeuare lo split. Qui di seguito vi mostro una possibile implementazione:

public string[] Split(string value, string separator)

{

return Split(value, separator, (char) 254);

}

public string[] Split(string value, string separator, char escapechar)

{

string[] outvalues = new string[] {};

char[] separators=new char[] {escapechar};

System.Text.StringBuilder sb = new StringBuilder(value);

sb.Replace(separator, new string(separators));

return sb.ToString().Split(separators);

}

 

Print | posted on lunedì 22 agosto 2005 23:29