Вырезать строку с помощью известного Start & Endindex - PullRequest
20 голосов
/ 27 февраля 2012

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

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

ABCDEFG

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

Ответы [ 4 ]

57 голосов
/ 27 февраля 2012

Если 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 .

1 голос
/ 11 января 2019

Это становится возможным с новой функцией диапазона C # 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 при построении диапазона, который используется в качестве конца диапазона, является эксклюзивным, а не включающим.

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

var someText = "ABCDEFG";

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

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

0 голосов
/ 27 февраля 2012

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

1)

public string Substring(
    int startIndex
)

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

2)

public string Substring(
    int startIndex,
    int length
)

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

0 голосов
/ 27 февраля 2012

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

public string Substring(
  int startIndex,
  int length
)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...