11. februar 2004 - 10:11
Der er
6 kommentarer og 1 løsning
string split
Jeg har en kommasepareret fil som skal splittes op. string [] Split = sTempLine.Split(new Char [] {','}); Denne linje deler min streng op ved hvert komma og smider hver enkelt element i et array. Det jeg gerne vil kunne gøre er at splitte min streng op på mere end et komma, nemlig på strengen ('", "') i stedet for (','), for at undgå at den deler på kommaer i den egentlige tekst. Jeg ved ikke om det kan lade sig gøre med split, men findes der ellers andre måder at gøre det på ?
Annonceindlæg fra Computerworld it-jobbank
Mød 3.500+ it-talenter på IT-DAY 2026
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
11. februar 2004 - 10:20
#1
Prøv og check dette lille eksempel: using System; using System.Text; using System.Text.RegularExpressions; class MainClass { public static void replaceandsplit(string s) { string[] s2 = s.Replace("\"","").Split(",".ToCharArray()); for(int i = 0; i < s2.Length; i++) { Console.WriteLine(" " + s2[i]); } } public static void splitandreplace(string s) { string[] s2 = s.Split(",".ToCharArray()); for(int i = 0; i < s2.Length; i++) { Console.WriteLine(" " + s2[i].Replace("\"","")); } } public static void manualparse(string s) { StringBuilder sb = new StringBuilder(); int ix = 0; bool inq = false; while(ix < s.Length) { switch(s[ix]) { case '"': if(inq) { if(((ix + 1) < s.Length) && (s[ix + 1] == '"')) { sb.Append(s[ix]); sb.Append(s[ix]); ix++; } else { inq = false; } } else { inq = true; } break; case ',': if(inq) { sb.Append(s[ix]); } else { Console.WriteLine(" " + sb.ToString()); sb = new StringBuilder(); } break; default: sb.Append(s[ix]); break; } ix++; } if(sb.Length > 0) { Console.WriteLine(" " + sb.ToString()); } } public static void regexparse(string s) { MatchCollection res = Regex.Matches(s,"([0-9]+)|([\"]{1}(([^\"])|(\"\"))*[\"]{1})"); for(int i = 0; i < res.Count; i++) { string s2 = res[i].Value; if(s2[0]=='"') { Console.WriteLine(" " + s2.Substring(1, s2.Length - 2)); } else { Console.WriteLine(" " + s2); } } } private static void test(string s) { Console.WriteLine(s); Console.WriteLine("replace and split: "); replaceandsplit(s); Console.WriteLine("split and replace: "); splitandreplace(s); Console.WriteLine("manual parse: "); manualparse(s); Console.WriteLine("regex parse: "); regexparse(s); } public static void Main(string[] args) { test("123,\"abc\",\"\"\"quoted\"\"\",\"partly \"\"quoted\"\" !\",\"a,b,c\""); } }
11. februar 2004 - 10:30
#2
ser ikke helt tosset ud, men hvordan Replacer jeg to " er det noget med (char)34 ??
11. februar 2004 - 10:42
#3
" inden i en streng er \"
11. februar 2004 - 10:46
#4
ok,.men hvad er der så galt med denne: Replace("\", \"", "\") Skulle den ikke lave ", " om til \ ?
11. februar 2004 - 10:50
#5
min fejl: Replace("\", \"", "\"") Sådan virker det.--
11. februar 2004 - 17:23
#6
OK at jeg liger et svar ?
29. februar 2004 - 19:43
#7
ja klart, tak for hjælpen :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.