2009-07-16 53 views
21

Tôi biết chính xác về các biểu thức chính quy và nhận thấy đây là cơ hội tốt để tìm hiểu ít nhất những điều cơ bản nhất.Làm thế nào để bạn thay thế chuỗi phân biệt chữ hoa chữ thường bằng cách sử dụng cụm từ thông dụng?

Làm cách nào để thực hiện thay thế chuỗi phân biệt chữ hoa chữ thường này trong C# bằng cách sử dụng cụm từ thông dụng?

myString.Replace("/kg", "").Replace("/KG", ""); 

(Lưu ý rằng '/' là một chữ.)

Trả lời

60

Bạn có thể sử dụng:

myString = Regex.Replace(myString, "/kg", "", RegexOptions.IgnoreCase); 

Nếu bạn đang đi để làm điều này rất nhiều lần, bạn có thể làm :

// You can reuse this object 
Regex regex = new Regex("/kg", RegexOptions.IgnoreCase); 
myString = regex.Replace(myString, ""); 

Sử dụng (?i:/kg) sẽ làm cho chỉ là chút của một larg er thường xuyên biểu hiện trường hợp không nhạy cảm - cá nhân tôi thích sử dụng RegexOptions để thực hiện một tùy chọn ảnh hưởng đến toàn bộ mô hình.

MSDN có pretty reasonable documentation biểu thức chính quy .NET.

+0

Bạn đã đánh bại tôi! :) –

+0

Bạn đã rời khỏi dấu hai chấm: (? I:/kg) –

+0

@Alan: Cảm ơn, đã được khắc phục ngay bây giờ. –

0

Nó phụ thuộc vào những gì bạn muốn đạt được. Tôi cho rằng bạn muốn xóa chuỗi ký tự sau dấu gạch chéo?

string replaced = Regex.Replace(input,"/[a-zA-Z]+",""); 

hoặc

string replaced = Regex.Replace(input,"/[a-z]+","",RegexOptions.IgnoreCase); 
2

"/ [KK] [GG]" hoặc "(i:/kg)" sẽ phù hợp cho bạn.

khai báo đối tượng regex mới, chuyển một trong những đối tượng đó dưới dạng nội dung của bạn. Sau đó chạy regex.replace.

0
Regex regex = new Regex(@"/kg", RegexOptions.IgnoreCase); 
    regex.Replace(input, ""); 
+0

xem Jon Skeet bên dưới, ông đã đăng đầu tiên –

+1

Không cần @ khi chỉ có * chuyển tiếp * dấu gạch chéo. –

+0

vâng, tôi đã sử dụng nregex.com để tạo dòng đầu tiên của ví dụ. họ sử dụng @ bất kể mẫu số –

4

Như thế này:

myString = Regex.Replace(myString, "/[Kk][Gg]", String.Empty); 

Lưu ý rằng nó cũng sẽ xử lý các kết hợp/kG và/Kg, vì vậy nó không hơn ví dụ chuỗi thay thế của bạn.

Nếu bạn chỉ muốn xử lý các kết hợp cụ thể/kg và/KG:

myString = Regex.Replace(myString, "/(?:kg|KG)", String.Empty); 
+0

Tại sao lại là downvote? Nếu bạn không giải thích những gì bạn nghĩ là sai, nó không thể cải thiện câu trả lời. – Guffa

0

Here là một ví dụ sử dụng chức năng Regex.Replace.

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