2013-05-12 22 views
6

Bir istemci, sistemlerini yükseltti ve çıktıdaki hataları bildirmeye başladı. Görünüşe göre, önce bir dize bölünmesi, aşağıdaki sonuçlandı. Bununla birlikte, şimdi bunu elde ederler..NET framework'ü yükseltildikten sonra RegEx.Split'teki davranış değiştirildi

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

Ben intellisense kontrol ettim ama bildiğim kadarıyla söyleyebilirim, ayırıcılar/kapama dahil edilmesini açma için bir seçenek var. Bunu nasıl kolayca halledebiliriz?

Başımın üst kısmından çıkardığım en iyi öneri, regex kullanarak ve sonra regex'in eşleşme koşuluyla bağlantıyı kullanan bölümlere ayırmaktır. Gerçi gereksiz ...

Güncel sürüm 4.5. Önceden, onlar gibi bir şey ooold, bir şey vardı.

+0

Kodu gösterebilir misiniz? –

+0

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

+0

Çok garip. Bu sonuç, Regex.Split ("a-b-c", "(-)"); 'için değil, gönderdikleriniz için beklenecektir. –

cevap

3

.NET 4.5 davranışı doğru.

Yakalama gruplarının içeriği bölünmüş sonuca eklenir. Bu nedenle, Regex.Split("a-b-c", "(-)"); dizgileri diziye ekleyecektir. Bunun yerine, Regex.Split("a-b-c", "-"); kullanın.

+0

Oh, doğru, davranış, tamam. Sadece öncekinden farklı. Az önce [bu bağlantıyı] buldum (http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx) (tarihleri ​​tartıştıklarında ortada bakın). Görünüşe göre, istemcim .NET'in önceki ooooooooold ** sürümünü çalıştırdı. –

İlgili konular