Как получить подстроку в C #? - PullRequest
49 голосов
/ 25 мая 2010

Я могу получить первые три символа с помощью функции ниже.

Однако, как я могу получить выходные данные последних пяти символов ( Три ) с помощью функции Substring(). Или будет использоваться другая строковая функция?

static void Main()
{
    string input = "OneTwoThree";

    // Get first three characters
    string sub = input.Substring(0, 3);
    Console.WriteLine("Substring: {0}", sub); // Output One. 
}

Ответы [ 11 ]

67 голосов
/ 25 мая 2010

Если ваша входная строка может быть длиной менее пяти символов, вы должны знать, что 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);
    }
}
14 голосов
/ 25 мая 2010
string sub = input.Substring(input.Length - 5);
9 голосов
/ 25 мая 2010

Если вы можете использовать методы расширения, это сделает это безопасным способом независимо от длины строки:

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);
8 голосов
/ 13 ноября 2016
static void Main()
    {
        string input = "OneTwoThree";

            //Get last 5 characters
        string sub = input.Substring(6);
        Console.WriteLine("Substring: {0}", sub); // Output Three. 
    }

Substring (0, 3) Возвращает подстроку первых 3 символов. // Один

Подстрока (3, 3) Возвращает подстроку из вторых 3 символов. // Два

Substring (6) Возвращает подстроку всех символов после первых 6. // Three

2 голосов
/ 25 января 2011

Вот быстрый метод расширения, который вы можете использовать, который имитирует синтаксис PHP. Включите AssemblyName.Extensions в файл кода, в котором вы используете расширение.

Тогда вы можете позвонить: input.SubstringReverse (-5), и он вернет «Три».

пространство имен 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));
    }
}

}

2 голосов
/ 25 мая 2010

Одним из способов является использование свойства Length строки как части ввода для Substring:

string sub = input.Substring(input.Length - 5); // Retrieves the last 5 characters of input
0 голосов
/ 06 апреля 2016

подстрока. Этот метод извлекает строки. Требуется расположение подстроки (начальный индекс, длина). Затем он возвращает новую строку с символами в этом диапазоне.

См. Небольшой пример:

string input = "OneTwoThree";
// Get first three characters.
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub);

Выход: Подстрока: Одна

0 голосов
/ 15 июня 2015
string input = "OneTwoThree";
(if input.length >5)
{
string str=input.substring(input.length-5,5);
}
0 голосов
/ 22 июля 2013
        // 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
0 голосов
/ 27 июня 2013

простой способ сделать это в одной строке кода был бы такой

string sub = input.Substring(input.Length > 5 ? input.Length - 5 : 0);

а вот некоторые сведения о операторе? :

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