2010-05-05 5 views
11

Zum Beispiel habe ich Code unter string txt = "Ich habe Strings wie West und West; und West und Western."Kann ich reguläre Ausdrücke mit String.Replace in C# verwenden?

Ich möchte das Wort West oder West durch ein anderes Wort ersetzen. Aber ich möchte West nicht im Westen ersetzen.

  1. Kann ich regulären Ausdruck in string.replace verwenden? Ich benutzte inputText.Replace("(\\sWest.\\s)",temp); Es funktioniert nicht.

Antwort

17

das ganze Wort zu ersetzen (und nicht Teil des Wortes):

string s = Regex.Replace(s, @"\bwest\b", "something"); 
+0

gut aussieht, aber das wird ignoriert Westen und Westen. Und ist es keine Groß- und Kleinschreibung? –

+0

Ich denke, es tut das gleiche wie ich bereits tun Using 's = s.Replace ("West", "etwas");' –

+0

Es funktioniert wie String s = Regex.Replace (s, @ "(\ bwest \ b)", "etwas"). Und es funktioniert für den Westen. und Westen und Westen; auch. Verstehe nicht wirklich warum :) –

5

Haben Sie bei Regex.Replace geschaut? Achten Sie auch darauf, den Rückgabewert abzufangen; Replace (über einen beliebigen String-Mechanismus) gibt eine neue Zeichenfolge zurück - es wird kein In-Place-Ersetzen durchgeführt.

3

Versuchen Sie, die Klasse System.Text.RegularExpressions.Regex zu verwenden. Es hat eine statische Replace Methode. Ich bin nicht gut mit regulären Ausdrücken, aber etwas wie

string outputText = Regex.Replace(inputText, "(\\sWest.\\s)", temp); 

sollte funktionieren, wenn Ihr regulärer Ausdruck korrekt ist.

0

diesen Code verwenden, wenn Sie es Groß- und Kleinschreibung

string pattern = @"\bwest\b"; 
string modifiedString = Regex.Replace(input, pattern, strReplacement, RegexOptions.IgnoreCase); 
0

ich mit Robert Harvey-Lösung mit Ausnahme einer kleinen Änderung einverstanden sein:

s = Regex.Replace(s, @"\bwest\b", "something", RegexOptions.IgnoreCase); 

Dies wird sowohl „Westen“ ersetzen und " West "mit Ihrem neuen Wort

0

Fügen Sie den regulären Ausdruck in den Code vor der Klasse

0 ein

unten ist der Code für String ersetzen regex

string input = "Dot > Not Perls"; 
// Use Regex.Replace to replace the pattern in the input. 
string output = Regex.Replace(input, "some string", ">"); 

Quelle: http://www.dotnetperls.com/regex-replace

18

Antwort auf die Frage ist NO - Sie nicht regexp in String.Replace verwenden können.

Wenn Sie einen regulären Ausdruck verwenden möchten, müssen Sie die Regex-Klasse verwenden, wie alle in ihren Antworten angegeben haben.

+3

+1 nur Antwort, die die Frage direkt beantwortet, wenn Sie String.Replace auch für Regex-Ausdrücke verwenden können – drkthng

-1

Klasse Regex ist statisch, wenn Sie die Methode Ersetzen (Regex.Replace) verwenden.

public static class Extension 
{ 
     public static string ReplaceValue(string data,string criteria) 
     { 
       return s = Regex.Replace(s, @"\bwest\b", "something"); 
     } 
} 
+0

Das sieht wie eine Frage aus. Stellen Sie * als Frage. * Sie haben diese Nicht-Antwort auch auf eine Frage geschrieben, die vor 6 Jahren beantwortet wurde. –

0

In Java akzeptiert String#replace Strings in regex Format, aber C# kann diese Erweiterungen verwenden auch tun:

public static string ReplaceX(this string text, string regex, string replacement) { 
    return Regex.Replace(text, regex, replacement); 
} 

Und es mögen verwenden:

var text = "  space   more spaces "; 
text.Trim().ReplaceX(@"\s+", " "); // "space more spaces"