私は声明を持っています:
私は次のような文字列を持っています
content = "* test *"
検索して置き換えたいので、完了すると文字列に次の文字列が含まれます。
content = "(*) test (*)"
私のコードは:
content = Regex.Replace(content, "*", "(*)");
ただし、*は正規表現構文の一部であると見なされるため、C#でエラーが発生します。
ランタイムエラーを発生させずに、文字列内のすべてのアスタリスクを代わりに(*)に変更するように、このコードを変更するにはどうすればよいですか?
*
は正規表現メタ文字であるため、文字クラス定義の外でリテラルアスタリスクとして必要な場合は、\
から\*
でエスケープする必要があります。
C#では、これを"\\*"
または@"\*"
と書くことができます。
C#には、任意の文字列を引用してリテラルとして照合できるように、汎用の「引用」メソッドも必要です。
あなたはそれを逃れることができます:
\*
この単純なシナリオでは、正規表現は必要ありません。 String.Replaceを使用できます:
content = content.Replace("*", "(*)");
使用する \\*
regex.replace呼び出しで*の代わりに
Regex.Escape()
を使用します。すべての文字列を取得して、正規表現の一部として使用できるものにします。