2010-10-22 49 views
6

Có cách nào để làm trường hợp không nhạy cảm thay thế trên một chuỗi mà không sử dụng biểu thức chính quy trong C#?Thay thế không phân biệt chữ hoa chữ thường mà không sử dụng cụm từ thông dụng trong C#?

một cái gì đó như thế này

string x = "Hello"; 

x = x.Replace("hello", "hello world"); 
+1

Bạn có thể cho chúng tôi ví dụ về ý của bạn không? – Ani

+0

Một giải pháp tốt được tìm thấy trong chủ đề này bởi @ c-dragon-76 http://stackoverflow.com/questions/244531/is-there-an-alternative-to-string-replace-that-is-case-insensitive – Jaider

Trả lời

6

Bạn có thể thử một cái gì đó giống như

string str = "Hello"; 
string replace = "hello"; 
string replaceWith = "hello world"; 
int i = str.IndexOf(replace, StringComparison.OrdinalIgnoreCase); 
int len = replace.Length; 
str = str.Replace(str.Substring(i, len), replaceWith); 

Có một cái nhìn tại String.IndexOf Method (String, StringComparison)

+0

Tôi nghi ngờ rằng 'Thay thế' sẽ có thể thay thế chuỗi. Một vấn đề khác của nó là bạn có chỉ mục bằng cách phớt lờ trường hợp. Nó là một ví dụ được thử nghiệm? – Nayan

+0

Có, tôi đã thử nghiệm điều này. Chỉ cần nhớ rằng tôi đang lấy chỉ mục bắt đầu dựa trên chuỗi tìm kiếm, nhưng thay thế dựa trên chuỗi con từ chuỗi gốc, vì vậy nó sẽ khớp. –

+0

nó không hoạt động như chúng tôi mong đợi trong các tình huống khác ... ví dụ: nếu 'str =" Hello-Hello "' nó sẽ trả về '" hello world-hello world "' nhưng nó là 'str =" Hello-hello "' nó sẽ trả về '" hello world-hello "' ... giải pháp một phần này cần thiết kế lại. – Jaider

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