muszę przeanalizować plik EDI, gdzie Separatory są +
, :
i '
znaki i postać ucieczka (release) jest ?
. najpierw podzielony na segmentypodzielonego regex ciąg z użyciem znaku uwalniania i separatory
var data = "NAD+UC+ABC2378::92++XYZ Corp.:Tel ?: ?+90 555 555 11 11:Mobile1?: ?+90 555 555 22 22:Mobile2?: ?+90 555 555 41 71+Duzce+Seferihisar/IZMIR++35460+TR"
var segments = data.Split('\'');
wtedy każdy segment jest podzielony na elementy danych segmentu przez +
, następnie elementy danych segmentu są podzielone na elementy składowe danych poprzez :
.
var dataElements = segments[0].Split('+');
Powyższy przykładowy ciąg znaków nie jest poprawnie przetwarzany ze względu na użycie znaku zwolnienia. Mam specjalny kod do czynienia z tym, ale myślę, że powinno to być wszystko wykonalne przy użyciu
Regex.Split(data, separator);
nie jestem zaznajomiony z Regex'es i nie mógł znaleźć sposób, aby to zrobić do tej pory. Najlepszym wymyśliłem tak daleko jest
string[] lines = Regex.Split(data, @"[^?]\+");
który pomija znak przed +
znak.
NA
U
ABC2378::9
+XYZ Corp.:Tel ?: ?+90 555 555 11 11:Mobile1?: ?+90 555 555 22 22:Mobile2?: ?+90 555 555 41 7
Duzc
Seferihisar/IZMI
+3546
TR
Prawidłowy wynik powinien być:
NAD
UC
ABC2378::92
XYZ Corp.:Tel ?: ?+90 555 555 11 11:Mobile1?: ?+90 555 555 22 22:Mobile2?: ?+90 555 555 41 7
Duzce
Seferihisar/IZMIR
35460
TR
Więc pytanie jest to wykonalne z Regex.Split, a co powinno separator regex wyglądać.
w twojej przykładowe dane Nie widzę żadnych "", więc w jaki sposób je rozdzielasz? –
Nie chciałem dołączać całego pliku, więc dane przykładowe to tylko jeden wiersz z tych segmentów, które są już analizowane. – hazimdikenli
OK. Więc chcesz podzielić, gdzie jest '+' nie poprzedzony znakiem '?', Prawda? –