Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在较大字符串的开头查找字符串_C# - Fatal编程技术网

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。其他注释可能会起作用,但仍然使用数组是最接近我当前代码的。谢谢其他注释可能会起作用,但仍然使用数组是最接近我当前代码的地方。谢谢