搜索字符串中索引最高的整数 - C#

问题描述 投票:0回答:2
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)
我很困惑为什么会这样以及是否有快速解决方案。

据我所知,在所有其他情况下,这都工作得很好。

c# string indexing max
2个回答
0
投票

我只是从后到头迭代字符串中的字符:

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);

0
投票

这应该可以完成工作。它找到了第五个位置,因此返回 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);
© www.soinside.com 2019 - 2024. All rights reserved.