Вырезать строку с помощью известного Start & Endindex

Когда у меня есть строка, которую я хочу вырезать в новую строку из определенного индекса в определенный индекс, какую функцию я использую?

Если строка была:

АБВГДЕЖ

Это будет означать получение BCD, когда указываются два индекса: 1 и 3.

Ответ 1

Вы используете String.Substring:

public string Substring(
  int startIndex,
  int length
)

Справедливости ради, это вопрос менее элементарный, с чрезвычайно доступными ответами - я дам вам пользу от сомнений в том, что вы что-то пробовали, просто так случилось, что вы нашли его здесь как-то; возможно, другие могут принести пользу (хотя я надеюсь, что их немного не нужно).

Ответ 2

Если endIndex указывает на последний символ, который вы хотите включить в извлеченную подстроку:

int length = endIndex - startIndex + 1;
string piece = s.Substring(startIndex, length);

Если endIndex указывает на первый символ, следующий за желаемой подстрокой (то есть на начало оставшегося текста):

int length = endIndex - startIndex;
string piece = s.Substring(startIndex, length);

См. Метод String.Substring(Int32, Int32) для официального описания документов Microsoft.

Ответ 3

Существует два способа подстроки.

1)

public string Substring(
    int startIndex
)

Получает подстроку из этого экземпляра. Подстрока начинается с заданной позиции символа.

2)

public string Substring(
    int startIndex,
    int length
)

Получает подстроку из этого экземпляра. Подстрока начинается с заданной позиции символа и имеет указанную длину.

Ответ 4

Это становится возможным с новой функцией Range в С# 8.0.

Метод расширения string который использует Range для достижения этой цели:

public static class StringExtensions
{
    public static string SubstringByIndexes(this string value, int startIndex, int endIndex)
    {
        var r = Range.Create(startIndex, endIndex + 1);
        return value[r];
        /*
        // The content of this method can be simplified down to:

        return value[startIndex..endIndex + 1];

        // by using a 'Range Expression' instead of constructing the Range 'long hand'
        */
    }
}

Примечание: 1 добавляется в endIndex когда конструирование Range, который используется как конец диапазона, является эксклюзивным, а не включающим.

Который можно назвать так:

var someText = "ABCDEFG";

var substring = someText.SubstringByIndexes(1, 3);

Задание значения BCD в substring.