我只是想知道是否有一种方法可以比较第一个c#字符串和一个startIndex。我有一个长字符串和一个索引,想要查找下一个字符是否等于一个字符串。我发现做到这一点的唯一方法是:
public static bool Equals (string longString, int index, string compare) => longString.Substring(index, compare.Length) == compare;
我认为这样做效率不高,因为每次在索引处比较新字符串时,您都不必要创建一个子字符串。有没有更有效的方法?我看着字符串。等于,但看起来不太舒服,可以重写。
答案 0 :(得分:0)
这是我找到的最好的解决方案。
public static bool Equals (string longString, int index, string compare)
{
if (longString.Length > (index + compare.Length))
return false;
for (int n = 0; n < compare.Length; n++)
{
if (longString[index + n] != compare[n])
return false;
}
return true;
}
答案 1 :(得分:0)
IndexOf()包含一个重载,我们可以在其中设置startIndex
并检查字符串是否包含所需的单词,然后我们应检查startIndex
之后的子字符串的长度是否与请注意,以下解决方案根本不会创建新的子字符串:
var startIndex = 2; var longString = "56789"; var wordToFind = "789"; var isEqual = longString.IndexOf(wordToFind, startIndex) != -1 && wordToFind.Length == (longString.Length - startIndex); Console.WriteLine(isEqual);