2013-05-12 12 views
6

Klient zaktualizował swoje systemy i zaczął zgłaszać błędy w danych wyjściowych. Wygląda na to, że podział na łańcuchy powodował następujące zmiany.Zmieniono zachowanie w RegEx.Split po aktualizacji architektury .NET Framework

"a-b-c" -> {"a", "b", "c"} 

Teraz jednak to dostają.

"a-b-c" -> {"a", "-", "b", "-", "c"} 

Sprawdziłem intellisense ale o ile wiem, nie ma opcji do włączania/wyłączania na publikację separatorów. Jak można sobie z tym łatwo poradzić?

Najlepszą sugestią, jaką mam z góry mojej głowy, jest podział za pomocą wyrażenia regularnego, a następnie w miejscu, w którym używa się linku z dopasowanym warunkiem regex. Wydaje się niepotrzebne, ale ...

Obecna wersja to 4.5. Wcześniej mieli coś takiego, jak 2.0 lub coś podobnego.

+0

Czy możesz pokazać kod? –

+0

Regex.Split ("a-b-c", "-"); –

+0

Bardzo dziwne. Ten wynik byłby oczekiwany dla 'Regex.Split (" a-b-c "," (-) ");', ale nie dla tego, co napisałeś. –

Odpowiedz

3

Zachowanie .NET 4.5 jest poprawne.

Zawartość grup chwytających jest dodawana do wyniku podziału. Dlatego Regex.Split("a-b-c", "(-)"); doda kreski do tablicy.

Zamiast tego należy użyć Regex.Split("a-b-c", "-");.

+0

Och, to prawda, zachowanie, w porządku. Jest inaczej niż wcześniej. Właśnie znalazłem [ten link] (http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx) (patrz w środku, kiedy omawiają daty). Najwyraźniej mój klient korzystał wcześniej z ** ooooooooold ** wersji .NET. –

Powiązane problemy