如何在C#中获取子字符串?

问题描述 投票:48回答:11

我可以使用下面的函数获得前三个字符。

但是,如何使用Substring()函数获取最后五个字符(三)的输出。或者将使用其他字符串函数?

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

    // Get first three characters
    string sub = input.Substring(0, 3);
    Console.WriteLine("Substring: {0}", sub); // Output One. 
}
c# string
11个回答
65
投票

如果您的输入字符串长度少于五个字符,那么您应该知道如果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);
    }
}

0
投票

子。此方法提取字符串。它需要子串的位置(起始索引,长度)。然后它返回一个包含该范围内字符的新字符串。

看一个小例子:

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

输出:子串:一个


-1
投票
        // 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

14
投票
string sub = input.Substring(input.Length - 5);

9
投票

如果您可以使用扩展方法,无论字符串长度如何,这都将以安全的方式执行:

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
投票
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个字符的子字符串。 //一

Substring(3,3)返回第二个3个字符的子字符串。 //二

Substring(6)返回第一个6./3之后所有字符的子字符串


2
投票

一种方法是使用字符串的Length属性作为Substring输入的一部分:

string sub = input.Substring(input.Length - 5); // Retrieves the last 5 characters of input

2
投票

这是一个模仿PHP语法的快速扩展方法。将AssemblyName.Extensions包含到您正在使用扩展名的代码文件中。

然后你可以调用:input.SubstringReverse(-5)它将返回“Three”。

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));
    }
}

}


0
投票

EG

        string str = null;
        string retString = null;
        str = "This is substring test";
        retString = str.Substring(8, 9);

这回归“子串”

C# substring sample source:


0
投票

在一行代码中执行此操作的简单方法就是这样

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

这里有一些关于Operator ? :的信息


0
投票
string input = "OneTwoThree";
(if input.length >5)
{
string str=input.substring(input.length-5,5);
}
© www.soinside.com 2019 - 2024. All rights reserved.