Есть ли способ сравнить строки с startIndex? - PullRequest
0 голосов
/ 20 июня 2020

Мне просто интересно, есть ли способ сравнить c# строк с startIndex для первой. У меня есть длинная строка и индекс, и я хочу узнать, равны ли следующие символы строке. Я нашел единственный способ сделать это:

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

Я думаю, что это неэффективно, потому что вы без необходимости создаете подстроку каждый раз, когда сравниваете новую строку по индексу. Есть более эффективный способ? Я посмотрел на string.Equals, но это не похоже на то, что мне было бы удобно переписывать.

Ответы [ 2 ]

1 голос
/ 21 июня 2020

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);
1 голос
/ 21 июня 2020

Это лучшее решение, которое я нашел.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...