0

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

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

3 回答 3

13

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

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

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

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

于 2013-10-13T17:00:44.177 回答
2
var result = new string(input.SkipWhile(x=>!char.IsDigit(x))
                             .TakeWhile(char.IsDigit).ToArray());
//You can apply int.Parse() on the result
于 2013-10-13T17:00:30.553 回答
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 中的 @LexRema 并从字符串中提取数字

于 2013-10-13T17:05:56.413 回答