c# - 从字符串中提取第一个整数

时间:2013-10-13 16:56:01

标签: c# linq

给定以下2个字符串,如何在不使用正则表达式的情况下从每个获取第一个整数:

"Result Set 25: 171 companies"  =>  get 25
"Other Text 22 : 140 companies"  =>  get 22

3 个答案:

答案 0 :(得分:11)

您可以使用linq查找第一个数字序列

var digits = input.SkipWhile(c => !Char.IsDigit(c))
    .TakeWhile(Char.IsDigit)
    .ToArray();

var str = new string(digits);
int i = int.Parse(str);

在尝试解析结果字符串以检查输入中是否有任何数字之前,您可能需要检查结果字符串是否为空。

答案 1 :(得分:2)

var result = new string(input.SkipWhile(x=>!char.IsDigit(x))
                             .TakeWhile(char.IsDigit).ToArray());
//You can apply int.Parse() on the result

答案 2 :(得分:0)

不太确定它的效率如何,但如果没有RegEX,它是我能做到的最好的。

string a = "Result Set 25: 171 companies";
string b = string.Empty;
int val;
for (int i = 0; i < a.Length; i++)
{
    if (Char.IsDigit(a[i]))
        b += a[i];
    else if (b.Length != 0)
        break;
}
if (b.Length > 0)
val = int.Parse(b);

基于Find and extract a number from a string的@LexRema