C# 在较大字符串的开头查找字符串
我试图在字符串数组中找到哪一个以特定的子字符串开头。数组中的一个字符串保证以特定的子字符串开头 我尝试使用:C# 在较大字符串的开头查找字符串,c#,C#,我试图在字符串数组中找到哪一个以特定的子字符串开头。数组中的一个字符串保证以特定的子字符串开头 我尝试使用: int index = Array.BinarySearch (lines, "^"+subString); 其中lines是字符串数组,我要查找以subString开头的数组的索引。然而,我不是不正确地使用了正则表达式,就是有更好的方法来解决这个问题?您需要找到第一次出现的索引,还是需要找到与该标准匹配的实际字符串 myString.StartsWith(myPrefix); //r
int index = Array.BinarySearch (lines, "^"+subString);
其中lines是字符串数组,我要查找以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语句来完成。如果我在寻找索引,我更喜欢使用数组。您需要找到第一次出现的索引,还是需要找到与该标准匹配的实际字符串
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语句来完成。如果要查找索引,我更喜欢使用数组。BinarySearch只能用于查找完整的字符串,因此不能将其用于子字符串匹配。要使用BinarySearch,您还必须确保首先对数组进行排序
您可以使用Array.FindIndex:
BinarySearch只能用于查找完整的字符串,因此不能将其用于子字符串匹配。要使用BinarySearch,您还必须确保首先对数组进行排序
您可以使用Array.FindIndex:
然而,另一个解决方案是:
int index = lines.ToList().FindIndex(line => line.TrimStart().StartsWith(subString));
然而,另一个解决方案是:
int index = lines.ToList().FindIndex(line => line.TrimStart().StartsWith(subString));
不正确地使用正则表达式在BinarySearch中没有正则表达式,只有IComparable。不正确地使用正则表达式在BinarySearch中没有正则表达式,只有IComparable。其他注释可能会起作用,但仍然使用数组是最接近我当前代码的。谢谢其他注释可能会起作用,但仍然使用数组是最接近我当前代码的地方。谢谢