正規表現を使用して文字列が正しいかどうかをチェックしていました(文字、、、、、、、、、、、A-Z
を許可したい)。私のコードは次のようなものです:a-z
*
space
-
&
%
.
/
+
Regex r = new Regex("^[A-Z0-9.$/+%\\- ]+$");
string myString = "ABCDEFGH 12345 $%... A"; //string ok
if (r.IsMatch(myString))
System.Console.WriteLine("String alright!");
これは機能しており、すべてが正常です。今、私はちょうど考えました、多分私は正しくない文字列も扱うことができるでしょう。文字列内の正しくない(正規表現が無効な)文字を。に置き換えたいと思います-
。それはで行うことができますRegex.Replace
。だから私はこれを作りました:
Regex r = new Regex("^[A-Z0-9.$/+%\\- ]+$");
string myString = "HELLO WÖRLD ß~# 50.00$"; //Ö,ß,~,# should be replaced by -
if (r.IsMatch(myString))
System.Console.WriteLine("String alright!");
else
myString = Regex.Replace(myString, r.ToString(), "-");
System.Console.WriteLine(myString);
まあ、これはとても機能していません!出力として私は得る:
HELLO WÖRLD ß~# 50.00$
私は何が欠けていますか?問題は正規表現ですよね?文字列が正しいかどうかは確認できますが、この正規表現でRegex.Replace関数を正しく使用できません。文字列が有効であり、使用できるかどうかを確認するために1つの正規表現を使用する方法はありますRegex.Replace
か?