使用.Split拆分字符串并返回第一个整数值



一直在尝试使用空格拆分字符串并从字符串中获得第一个整数。整数必须是独立的,所以里面不能有其他字符。感谢任何帮助

可能

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只包含数字

。 编辑:注意,resultstring类型,因为没有任何数字序列是有效的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 _));

最新更新