Wpis z mikrobloga

Witam regexpowe swiry,
Jako ze jestem leszczem w temacie, potrzebuje wyrazenie ktory dany string:

Wartosc1;Wartosc2;Wartosc3;ZnakSpecjalny=';';Wartosc4;Wartosc5;

zesplituje po ; na

1.Wartosc1
2.Wartosc2
3.Wartosc3
4.ZnakSpecjalny=';'
5.Wartosc4
6.Wartosc5
etc

Chyba, ze znacie w c# jakis bardziej elegancki sposob, ale zalezy mi zeby w miare szybko dzialalo
#programowanie #regexp #wyrazeniaregularne #dotnet #csharp
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Crisu: Co do eleganckiego sposobu' i żeby szybko działało:
Pamiętaj, że premature optimization is the root of all evil. Regex w większości zastosowań będzie wystarczojąco szybki, a dławikiem będzie IO. Jak naprawdę potrzebujesz szybkiego parsowania to zrób sobie coś w rodzaju wykrywania indices.
pseudokod:

parse(string in) {
List result =
  • Odpowiedz
@maciekmm_net:

string test = "Wartosc1;Wartosc2;Wartosc3;ZnakSpecjalny=';';Wartosc4;Wartosc5;";
string[] arr = Regex.Split(test, @"([^;']*('[^']*')*)*;");

Widze ze kolega lvl 99 w regexp. Co kurna zle zrobilem, ze zwraca 14 pustych elementow :<

@lume: stronka super, moze sie przelame w wolnej chwili do tego narzedzia diabla ;)
  • Odpowiedz
@lume: Zgadzam sie w 100%. Ale mam legacy apke, ktora i tak juz zamula. A doszly nowe wymagania z sufitu. Probowalem sobie ogarnac to w karkołomny sposob przez linq ale wydajosciowo zwolnilo juz na wstepnym etapie to zostaly tylko regexpy :(
  • Odpowiedz