给定以下2个字符串,如何在不使用正则表达式的情况下从每个获取第一个整数:
"Result Set 25: 171 companies" => get 25
"Other Text 22 : 140 companies" => get 22
答案 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