たとえば、文字列txt = "IにはWest、West、West、Westなどの文字列があります。"
西または西の単語を他の単語に置き換えたい。しかし、私は西部の西部に取って代わりたくない。
inputText.Replace("(\\sWest.\\s)",temp);
を使用しましたが、機能しません。(Wordの一部ではなく)Word全体を置き換えるには:
string s = "Go west Life is peaceful there";
s = Regex.Replace(s, @"\bwest\b", "something");
質問への答えは[〜#〜] no [〜#〜]-string.Replaceで正規表現を使用できません。
正規表現を使用する場合は、誰もが答えを述べているように、Regexクラスを使用する必要があります。
Regex.Replace
を見ましたか?また、必ず戻り値をキャッチしてください。 Replace
(任意の文字列メカニズムを使用)はnew文字列を返します-インプレース置換は行いません。
System.Text.RegularExpressions.Regex
クラスを使用してみてください。静的Replace
メソッドがあります。正規表現は苦手ですが、
string outputText = Regex.Replace(inputText, "(\\sWest.\\s)", temp);
正規表現が正しければ、動作するはずです。
大文字と小文字を区別しない場合は、このコードを使用します
string pattern = @"\bwest\b";
string modifiedString = Regex.Replace(input, pattern, strReplacement, RegexOptions.IgnoreCase);
クラスの前のコードに正規表現を挿入する
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", ">");
1つの小さな変更を除いて、Robert Harveyのソリューションに同意します。
s = Regex.Replace(s, @"\bwest\b", "something", RegexOptions.IgnoreCase);
これにより、 "West"と "west"の両方が新しいWordに置き換えられます
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"