2010-10-22 14 views
6

Czy istnieje sposób, aby zastąpić niewrażliwe na wielkość ciągu znaków bez użycia wyrażenia regularnego w C#?Case niewrażliwe zastąpić bez użycia wyrażenia regularnego w C#?

coś takiego

string x = "Hello"; 

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

Czy możesz podać nam przykład tego, co masz na myśli? – Ani

+0

Dobre rozwiązanie można znaleźć w tym temacie: @ c-dragon-76 http://stackoverflow.com/questions/244531/is-there-an-alternative-to-string-replace-that-is-case-insensitive – Jaider

Odpowiedz

6

Można spróbować czegoś jak

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); 

Wystarczy popatrzeć na String.IndexOf Method (String, StringComparison)

+0

Wątpię, aby 'Replace' mógł zastąpić ciąg znaków. Inną sprawą jest to, że masz indeks ignorując sprawę. Czy to jest sprawdzony przykład? – Nayan

+0

Tak, przetestowałem to. Pamiętaj tylko, że pobieram indeks początkowy na podstawie szukanego ciągu, ale zastępuję go na podstawie ciągu podrzędnego z oryginalnego ciągu znaków, aby był zgodny. –

+0

nie działa tak, jak można by oczekiwać w innych sytuacjach ... np. jeśli 'str =" Hello-Hello "' to zwróci '" hello world-hello world "' ale to 'str =" Hello-hello "' to zwróci '" hello world-hello "' ... to częściowe rozwiązanie trzeba przeprojektować. – Jaider

Powiązane problemy