在较大字符串的开头查找字符串

本文关键字:字符串 开头 查找 | 更新日期: 2023-09-27 18:10:07

我试图找到,在字符串数组中,哪一个以特定的子字符串开始。数组中的一个字符串保证以特定的子字符串开始。

我尝试使用:

int index = Array.BinarySearch (lines, "^"+subString);

其中行是字符串数组,我正在寻找开始与subString的数组的索引。然而,我要么使用正则表达式不正确,或者有一个更好的方法去做这件事?

在较大字符串的开头查找字符串

BinarySearch只能用于查找完整字符串,因此不能将其用于子字符串匹配。您还必须确保数组首先是有序的,才能使用BinarySearch

您可以使用Array.FindIndex:

int index = Array.FindIndex(lines, line => line.TrimStart().StartsWith(subString));

您需要查找(第一个)出现的索引,还是需要查找符合该条件的实际字符串 ?

myString.StartsWith(myPrefix); //returns bool

应该可以了。或者更详细一点:

var matchedLines = lines.Where(line => line.StartsWith(substring)).ToList();

如果您需要第一次出现的索引,我将其寻址为数组:

var firstOccurence = String.Empty;
var firstOccurenceIndex = -1;
for(int i = 0; i < lines.Length; i++)
{
    if(lines[i].StartsWith(substring))
    {
        firstOccurence = lines[i];
        firstOccurenceIndex = i;
        break;
    }
}

注意:你不一定要使用数组。它也可以通过foreach、手动计数器递增和break语句来完成。如果我要查找索引,我更喜欢使用数组

还有一个解决方案:

int index = lines.ToList().FindIndex(line => line.TrimStart().StartsWith(subString));