我可以使用下面的函数获得前三个字符。
但是,如何使用Substring()
函数获取最后五个字符(三)的输出。或者将使用其他字符串函数?
static void Main()
{
string input = "OneTwoThree";
// Get first three characters
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub); // Output One.
}
答案 0 :(得分:66)
如果您的输入字符串长度少于五个字符,那么您应该知道如果ArgumentOutOfRangeException
参数为负数,string.Substring
将抛出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);
}
}
答案 1 :(得分:14)
string sub = input.Substring(input.Length - 5);
答案 2 :(得分: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);
答案 3 :(得分: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. //三个
之后返回所有字符的子字符串
答案 4 :(得分:2)
一种方法是使用字符串的Length
属性作为Substring
的输入的一部分:
string sub = input.Substring(input.Length - 5); // Retrieves the last 5 characters of input
答案 5 :(得分:2)
这是一个模仿PHP语法的快速扩展方法。将AssemblyName.Extensions包含在正在使用扩展名的代码文件中。
然后你可以打电话: input.SubstringReverse(-5),它将返回“Three”。
命名空间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));
}
}
}
答案 6 :(得分:0)
e.g。
string str = null;
string retString = null;
str = "This is substring test";
retString = str.Substring(8, 9);
此返回&#34;子串&#34;
答案 7 :(得分:0)
在一行代码中执行此操作的简单方法是
string sub = input.Substring(input.Length > 5 ? input.Length - 5 : 0);
以及有关Operator ? :
的一些信息答案 8 :(得分:0)
string input = "OneTwoThree";
(if input.length >5)
{
string str=input.substring(input.length-5,5);
}
答案 9 :(得分:0)
子串。此方法提取字符串。它需要子串的位置(起始索引,长度)。然后它返回一个包含该范围内字符的新字符串。
参见一个小例子:
string input = "OneTwoThree";
// Get first three characters.
string sub = input.Substring(0, 3);
Console.WriteLine("Substring: {0}", sub);
输出: 子串:一个
答案 10 :(得分:0)
在 C#
8.0 及更高版本中,您可以使用 [^5..]
将最后五个字符与 ?
运算符组合在一起,以避免潜在的 ArgumentOutOfRangeException
。
string input1 = "0123456789";
string input2 = "0123";
Console.WriteLine(input1.Length >= 5 ? input1[^5..] : input1); //returns 56789
Console.WriteLine(input2.Length >= 5 ? input2[^5..] : input2); //returns 0123
答案 11 :(得分:-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