Когда у меня есть строка, которую я хочу вырезать в новую строку из определенного индекса в определенный индекс, какую функцию я использую?
Если строка была:
АБВГДЕЖ
Это будет означать получение BCD, когда указываются два индекса: 1 и 3.
Когда у меня есть строка, которую я хочу вырезать в новую строку из определенного индекса в определенный индекс, какую функцию я использую?
Если строка была:
АБВГДЕЖ
Это будет означать получение BCD, когда указываются два индекса: 1 и 3.
Вы используете String.Substring
:
public string Substring(
int startIndex,
int length
)
Справедливости ради, это вопрос менее элементарный, с чрезвычайно доступными ответами - я дам вам пользу от сомнений в том, что вы что-то пробовали, просто так случилось, что вы нашли его здесь как-то; возможно, другие могут принести пользу (хотя я надеюсь, что их немного не нужно).
Если 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)
public string Substring(
int startIndex
)
Получает подстроку из этого экземпляра. Подстрока начинается с заданной позиции символа.
2)
public string Substring(
int startIndex,
int length
)
Получает подстроку из этого экземпляра. Подстрока начинается с заданной позиции символа и имеет указанную длину.
Это становится возможным с новой функцией 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
.