2011-02-27 28 views

答えて

7
string str_a = "a1bc2d23ghj2"; 
string str_digits_only = new String(str_a.Where(char.IsDigit).ToArray()); 
int in_b = Convert.ToInt32(str_digits_only); 
+0

あなたのオリジナルのポストはコンパイルされませんでした、私はそれを修正するためにあなたの答えを編集しました。 – driis

+0

String.Joinを使用して、str_digits_onlyを配列から文字列に変換します。私はそれが非常に簡潔になります。 –

+3

もっとスリムなコードを書く場合は、char.IsDigitは既に 'Func 'と一致しているので、 '.Where(c => char.IsDigit(c))'の代わりに '.Where(char.IsDigit)'を使用することができます。 –

-2

tryparse方法を見てください。

+0

-1:それは動作しません。.NETの純粋なメソッド呼び出しより多くの作業を必要とせずに、初期の形式で数値を解析する方法はありません。 TryParseは例外をスローするのではなく、 "解析できません"と言うだけで、数値を取得しません。 –

+0

'int.TryParse(string)'メソッドも、入力文字列が正しい形式でないため失敗します。 –

+0

あなたはそうです。私は十分に元の投稿を読まなかった。 – Khadaji

2
StringBuilder builder = new StringBuilder(); 
foreach (char c in str_a) 
{ 
    if (Char.IsDigit(c)) 
    { 
     builder.Append(c); 
    } 
} 

int in_b = Int32.Parse(builder.ToString()); 
0

入力文字列が有効な数値ではありませんので、また、あなたがConvert.ToInt32(string)int.Parse(string)を使用する必要があるため、それが動作しません。あなたは文字列から数字だけを抽出したい場合は

あなたは、LINQを使用することができます。このため

string onlyNumbers = (from ch in str_a 
        where char.IsDigit(ch) 
        select ch.ToString()).Aggregate((a, b) => a + b); 

int in_b = int.Parse(onlyNumbers); 
0

私の解決策がされるだろう、あなたの文字列内の文字の文字コードを確認すること。すべての数字を選択し、それらを変換:

var str_a = "a1bc2d23ghj2"; 
    var in_b = Convert.ToInt32(string.Join(string.Empty,str_a.Where(x => x >= 48 && x <= 57))); 
0
int num = Convert.ToInt(System.Text.Regex.Replace(stra, "[^0-9]", string.Empty)); 
関連する問題