web-dev-qa-db-ja.com

C#のString.Replaceで正規表現を使用できますか?

たとえば、文字列txt = "IにはWest、West、West、Westなどの文字列があります。"

西または西の単語を他の単語に置き換えたい。しかし、私は西部の西部に取って代わりたくない。

  1. String.replaceで正規表現を使用できますか? inputText.Replace("(\\sWest.\\s)",temp);を使用しましたが、機能しません。
21
Tasawer Khan

(Wordの一部ではなく)Word全体を置き換えるには:

string s = "Go west Life is peaceful there";
s = Regex.Replace(s, @"\bwest\b", "something");
34
Robert Harvey

質問への答えは[〜#〜] no [〜#〜]-string.Replaceで正規表現を使用できません。

正規表現を使用する場合は、誰もが答えを述べているように、Regexクラスを使用する必要があります。

30
dortique

Regex.Replaceを見ましたか?また、必ず戻り値をキャッチしてください。 Replace(任意の文字列メカニズムを使用)はnew文字列を返します-インプレース置換は行いません。

7
Marc Gravell

System.Text.RegularExpressions.Regexクラスを使用してみてください。静的Replaceメソッドがあります。正規表現は苦手ですが、

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

正規表現が正しければ、動作するはずです。

4
Peter

大文字と小文字を区別しない場合は、このコードを使用します

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

クラスの前のコードに正規表現を挿入する

using System.Text.RegularExpressions;

以下は正規表現を使用した文字列置換のコードです

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

ソース: http://www.dotnetperls.com/regex-replace

1
Talha

1つの小さな変更を除いて、Robert Harveyのソリューションに同意します。

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

これにより、 "West"と "west"の両方が新しいWordに置き換えられます

1
Kyllan

Javaでは、String#replaceは正規表現形式の文字列を受け入れますが、C#は拡張機能を使用してこれを行うこともできます。

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

そしてそれを次のように使用します:

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