12

フォーマットが不十分なデータがいくつか与えられたため、文字列から数値を引き出す必要があります。これを行うための最良の方法がわかりません。数字は任意の長さにすることができます。

string a = "557222]]>";
string b = "5100870<br>";

私が何ができるのか、私はこれを手に入れます:

a = "557222"
b = "5100870"

ありがとう

解決策はC#用です申し訳ありません。そのタグを持つように質問を編集しました

4

8 に答える 8

31

数字以外のすべての文字を抽出する簡単な方法を作成できますが、これは浮動小数点データを処理しません。

public string ExtractNumber(string original)
{
     return new string(original.Where(c => Char.IsDigit(c)).ToArray());
}

これは純粋に「数字」を引き出します。希望する結果に応じて、Char.IsDigitの代わりにChar.IsNumberを使用することもできます。

于 2012-06-12T18:27:28.563 に答える
13

このワンライナーを試してください:

Regex.Replace(str, "[^0-9 _]", "");
于 2015-05-19T12:50:24.597 に答える
8

正確なコードについては、.NET に精通していません。それにもかかわらず、2つのアプローチは次のとおりです。

  • 整数としてキャストします。数字以外の文字が最後にある場合 (つまり21389abc)、これが最も簡単です。
  • 数字以外の文字が混在していて (つまり)、すべて1231a23vの数字を保持したい場合は、正規表現を使用して数字以外の文字を置き換えます。[^\d]
于 2012-06-12T18:26:26.443 に答える
7

単純な正規表現を使用できます。

var numericPart = Regex.Match( a, "\\d+" ).Value;

実際の数値にする必要がある場合は、int.Parseまたはを使用できますint.TryParse

于 2012-06-12T18:32:36.960 に答える
4

これを試して

string number = Regex.Match("12345<br>", @"\d+").Value;

これにより、最初の数字のグループが返されます。例:入力の"a 123 b 456 c"場合、。を返し"123"ます。

于 2012-06-12T18:33:01.700 に答える