有什么方法可以将字符串与startIndex进行比较吗?

时间:2020-06-20 20:43:38

标签: c# string substring

我只是想知道是否有一种方法可以比较第一个c#字符串和一个startIndex。我有一个长字符串和一个索引,想要查找下一个字符是否等于一个字符串。我发现做到这一点的唯一方法是:

public static bool Equals (string longString, int index, string compare) => longString.Substring(index, compare.Length) == compare;

我认为这样做效率不高,因为每次在索引处比较新字符串时,您都不必要创建一个子字符串。有没有更有效的方法?我看着字符串。等于,但看起来不太舒服,可以重写。

2 个答案:

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