これを行うよりも「(123)455-2344」などの文字列を取得して「1234552344」を取得するより良い方法はありますか?
var matches = Regex.Matches(input, @"[0-9]+", RegexOptions.Compiled);
return String.Join(string.Empty, matches.Cast<Match>()
.Select(x => x.Value).ToArray());
たぶん、単一のマッチでそれを行うことができる正規表現パターンですか?私はそれを達成するためにそれを作成するようには見えなかった。
正規表現を使用する必要がありますか?
return new String(input.Where(Char.IsDigit).ToArray());
Replace
に対して何かお持ちですか?
return Regex.Replace(input, @"[^0-9]+", "");
/\D/
(数字以外)を''
(空の文字列)に置き換えます。
Regex r = new Regex(@"\D");
string s = Regex.Replace("(123) 455-2344", r, "");
またはもっと簡潔に:
string s = Regex.Replace("(123) 455-2344", @"\D",""); //return only numbers from string
数字以外のすべてを削除します。
var result = Regex.Replace(input, @"\D", "");
Perlでは(これをC#に適合させることができます)、単に
$str =~ s/[^0-9]//g;
私はあなたの文字列が$ strにあると仮定しています。基本的な考え方は、数字以外のすべてを ''に置き換えることです(つまり、空の文字列)。