数字がほしいです。文字列の数値をintに変換するには
string str_a = "a1bc2d23ghj2";
int in_b = convert.toint32(str_a); // doesn't works
私はIN_Bの出力になりたい:12232
数字がほしいです。文字列の数値をintに変換するには
string str_a = "a1bc2d23ghj2";
int in_b = convert.toint32(str_a); // doesn't works
私はIN_Bの出力になりたい:12232
string str_a = "a1bc2d23ghj2";
string str_digits_only = new String(str_a.Where(char.IsDigit).ToArray());
int in_b = Convert.ToInt32(str_digits_only);
StringBuilder builder = new StringBuilder();
foreach (char c in str_a)
{
if (Char.IsDigit(c))
{
builder.Append(c);
}
}
int in_b = Int32.Parse(builder.ToString());
入力文字列が有効な数値ではありませんので、また、あなたが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);
私の解決策がされるだろう、あなたの文字列内の文字の文字コードを確認すること。すべての数字を選択し、それらを変換:
var str_a = "a1bc2d23ghj2";
var in_b = Convert.ToInt32(string.Join(string.Empty,str_a.Where(x => x >= 48 && x <= 57)));
int num = Convert.ToInt(System.Text.Regex.Replace(stra, "[^0-9]", string.Empty));
あなたのオリジナルのポストはコンパイルされませんでした、私はそれを修正するためにあなたの答えを編集しました。 – driis
String.Joinを使用して、str_digits_onlyを配列から文字列に変換します。私はそれが非常に簡潔になります。 –
もっとスリムなコードを書く場合は、char.IsDigitは既に 'Func'と一致しているので、 '.Where(c => char.IsDigit(c))'の代わりに '.Where(char.IsDigit)'を使用することができます。 –