一直在尝试使用空格拆分字符串并从字符串中获得第一个整数。整数必须是独立的,所以里面不能有其他字符。感谢任何帮助
可能
string input = "sdf fg gfh 4v 345gg g 4 dfg dfg";
int? result = input.Split(' ')
.Select(x => int.TryParse(x, out int val) ? val : (int?)null)
.FirstOrDefault(x => x != null);
Console.WriteLine(result);
4
您可以尝试Linq来查询source
字符串:
string source = "abc a5 123 789 pqr";
string result = source
.Split(' ')
.FirstOrDefault(item => item.Any() && item.All(c => c >= '0' && c <= '9'));
这里我们将source
拆分为
{"abc", "a5", "123", "789", "pqr"}
然后得到"123"
-首先不空item
只包含数字。
编辑:注意,result
是string
类型,因为没有任何数字序列是有效的int
:例如123456789123456789
对于int
来说太长。如果我们可以保证result
足够短,那么您可以将其解析为某种整数类型,例如
int answer = int.Parse(result);
或
long answer = long.Parse(result);
或者
BigInteger answer = BigInteger.Parse(result);
如果我们也接受负的值,我们可以将正则表达式:
using System.Text.RegularExpressions;
...
string result = source
.Split(' ')
.FirstOrDefault(item => Regex.IsMatch(item, @"^-?[0-9]+$"));
试试这个:
var firstOrDefaultInteger = input.Split(' ')
.FirstOrDefault(x => int.TryParse(x, out _));