String[] digits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
String line = "four95qvkvveight5";
index_digit2 = digits
.Where(d => line.Contains(d))
.Max(d => line.IndexOf(d));
我正在迭代一个文件,搜索每行的第一个和最后一个数字。这就是我用来搜索每行中最后一个整数的方法,它工作正常,直到我到达上面看到的字符串。因为我得到的是前 5 个的索引,而不是最后一个。 (index_digit2 = 5 不像我期待的 16)
我很困惑为什么会这样以及是否有快速解决方案。
据我所知,在所有其他情况下,这都工作得很好。
我只是从后到头迭代字符串中的字符:
int? index = null;
for(int i = myString.Length - 1; i >= 0; i--)
{
if(myString[i].IsDigit())
{
index = i;
break;
}
}
或更短一点:
var result = myString.Select((x, i) => new { Index = i, Char = x }).LastOrDefault(x => x.Char.IsDigit())?.Index;
或使用
string.LastIndexOfAny
:
var result = myString.LastIndexOfAny(digits);
这应该可以完成工作。它找到了第五个位置,因此返回 5。
String[] digits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
String line = "four95qvkvveight5";
var index_digit2 = digits
.Where(d => line.Contains(d))
.Max(d => line.LastIndexOf(d));
Console.WriteLine(index_digit2);