Как получить подстроку в С#?
Я могу получить первые три символа с приведенной ниже функцией.
Однако, как я могу получить вывод последних пяти символов (Три) с помощью функции Substring()
. Или будет использоваться другая функция строки?
static void Main()
{
string input = "OneTwoThree";
// Get first three characters
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub); // Output One.
}
Ответы
Ответ 1
Если ваша строка ввода может быть меньше пяти символов, тогда вы должны знать, что string.Substring
будет вызывать ArgumentOutOfRangeException
, если Аргумент startIndex
отрицательный.
Чтобы решить эту потенциальную проблему, вы можете использовать следующий код:
string sub = input.Substring(Math.Max(0, input.Length - 5));
Или более явно:
public static string Right(string input, int length)
{
if (length >= input.Length)
{
return input;
}
else
{
return input.Substring(input.Length - length);
}
}
Ответ 2
string sub = input.Substring(input.Length - 5);
Ответ 3
Если вы можете использовать методы расширения, это сделает это безопасным способом, независимо от длины строки:
public static string Right(this string text, int maxLength)
{
if (string.IsNullOrEmpty(text) || maxLength <= 0)
{
return string.Empty;
}
if (maxLength < text.Length)
{
return text.Substring(text.Length - maxLength);
}
return text;
}
И использовать его:
string sub = input.Right(5);
Ответ 4
static void Main()
{
string input = "OneTwoThree";
//Get last 5 characters
string sub = input.Substring(6);
Console.WriteLine("Substring: {0}", sub); // Output Three.
}
Подстрока (0, 3) Возвращает подстроку первых 3 символов.//Один
Подстрока (3, 3) Возвращает подстроку вторых 3 символов.//Два
Подстрока (6) Возвращает подстроку всех символов после первого 6.//Three
Ответ 5
Один из способов - использовать свойство Length
для строки как часть входа в Substring
:
string sub = input.Substring(input.Length - 5); // Retrieves the last 5 characters of input
Ответ 6
Вот быстрый метод расширения, который вы можете использовать, который имитирует синтаксис PHP. Включите AssemblyName.Extensions в файл кода, в котором вы используете расширение.
Тогда вы могли бы позвонить:
input.SubstringReverse(-5), и он вернет "Три".
namespace AssemblyName.Extensions {
public static class StringExtensions
{
/// <summary>
/// Takes a negative integer - counts back from the end of the string.
/// </summary>
/// <param name="str"></param>
/// <param name="length"></param>
public static string SubstringReverse(this string str, int length)
{
if (length > 0)
{
throw new ArgumentOutOfRangeException("Length must be less than zero.");
}
if (str.Length < Math.Abs(length))
{
throw new ArgumentOutOfRangeException("Length cannot be greater than the length of the string.");
}
return str.Substring((str.Length + length), Math.Abs(length));
}
}
}
Ответ 7
например.
string str = null;
string retString = null;
str = "This is substring test";
retString = str.Substring(8, 9);
Эта возвращаемая подстрока
Источник подстроки С#:
Ответ 8
простой способ сделать это в одной строке кода будет
string sub = input.Substring(input.Length > 5 ? input.Length - 5 : 0);
и вот некоторые сведения о Operator?:
Ответ 9
string input = "OneTwoThree";
(if input.length >5)
{
string str=input.substring(input.length-5,5);
}
Ответ 10
подстроку. Этот метод извлекает строки. Для этого требуется расположение подстроки (начальный индекс, длина). Затем он возвращает новую строку с символами в этом диапазоне.
См. небольшой пример:
string input = "OneTwoThree";
// Get first three characters.
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub);
Выход:
Подстрока: одна
Ответ 11
// Get first three characters
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub); // Output One.
string sub = input.Substring(6, 5);
Console.WriteLine("Substring: {0}", sub); //You'll get output: Three