2013-05-12 29 views
6

Một khách hàng đã nâng cấp hệ thống của họ và họ bắt đầu báo cáo lỗi trong đầu ra. Rõ ràng, một chuỗi phân chia trước khi dẫn đến những điều sau đây.Hành vi đã thay đổi trong RegEx.Split sau khi nâng cấp .NET framework

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

Bây giờ, tuy nhiên, họ nhận được điều này.

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

Tôi đã kiểm tra intellisense nhưng như xa tôi có thể nói, không có tùy chọn để bật/tắt việc bao gồm các máy tách. Làm thế nào có thể giải quyết điều này một cách dễ dàng?

Đề xuất tốt nhất mà tôi có nằm ngoài đầu của tôi là chia nhỏ bằng regex và sau đó sử dụng liên kết với điều kiện phù hợp của regex. Dường như dư thừa, mặc dù ...

Phiên bản hiện tại là 4.5. Trước đây, họ có một cái gì đó ooold, như 2.0 hoặc một cái gì đó.

+0

Bạn có thể hiển thị mã không? –

+0

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

+0

Rất lạ. Kết quả đó sẽ được mong đợi cho 'Regex.Split (" a-b-c "," (-) ");', nhưng không phải cho những gì bạn đã đăng. –

Trả lời

3

Hành vi của .NET 4.5 là chính xác.

Nội dung của nhóm chụp được thêm vào kết quả tách. Do đó, Regex.Split("a-b-c", "(-)"); sẽ thêm dấu gạch ngang vào mảng.

Sử dụng Regex.Split("a-b-c", "-"); để thay thế.

+0

Ồ, đúng, hành vi, được rồi. Nó chỉ khác so với trước đây. Tôi chỉ tìm thấy [liên kết này] (http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx) (xem ở giữa khi họ thảo luận về ngày tháng). Rõ ràng, khách hàng của tôi đã chạy ** ooooooooold ** phiên bản .NET trước đây. –

Các vấn đề liên quan