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