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

par*_*ent -1 c# linq

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

"Result Set 25: 171 companies"  =>  get 25
"Other Text 22 : 140 companies"  =>  get 22
Run Code Online (Sandbox Code Playgroud)

Lee*_*Lee 11

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

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

var str = new string(digits);
int i = int.Parse(str);
Run Code Online (Sandbox Code Playgroud)

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

  • 请记住,对于像Unicode这样的Unicode数字,`Char.IsDigit`也会返回true,`int.Parse`会拒绝,因此最好明确检查`c> ='0'&& c <='9 "`. (2认同)