web-dev-qa-db-ja.com

文字列からすべての数字を取得する最良の方法

これを行うよりも「(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());

たぶん、単一のマッチでそれを行うことができる正規表現パターンですか?私はそれを達成するためにそれを作成するようには見えなかった。

26
Chris Marisic

正規表現を使用する必要がありますか?

return new String(input.Where(Char.IsDigit).ToArray());
76
Matt Hamilton

Replaceに対して何かお持ちですか?

return Regex.Replace(input, @"[^0-9]+", "");
21
Alan Moore

/\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
8
maček

数字以外のすべてを削除します。

var result = Regex.Replace(input, @"\D", "");
4

Perlでは(これをC#に適合させることができます)、単に

$str =~ s/[^0-9]//g; 

私はあなたの文字列が$ strにあると仮定しています。基本的な考え方は、数字以外のすべてを ''に置き換えることです(つまり、空の文字列)。

0
Jasmeet