如何忽略字符串的前10个字符?
输入:
str = "hello world!";
输出:
d!
如何忽略字符串的前10个字符?
输入:
str = "hello world!";
输出:
d!
Answers:
Substring
有两种重载方法:
public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.
public string Substring(int startIndex, int length);//The substring starts at a specified character position and taking length no of character from the startIndex.
因此,对于这种情况,您可以使用下面的第一种方法:
var str = "hello world!";
str = str.Substring(10);
这里的输出是:
d!
如果您可以通过检查其长度来应用防御性编码。
您可以使用带单个参数的方法Substring方法,该参数是从其开始的索引。
在下面的代码中,我处理的情况是长度小于所需的起始索引并且长度为零。
string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
对于:
var str = "hello world!";
要获得没有前10个字符的结果字符串,并且如果字符串的长度小于或等于10,则为空字符串,可以使用:
var result = str.Length <= 10 ? "" : str.Substring(10);
要么
var result = str.Length <= 10 ? "" : str.Remove(0, 10);
优选第一变体,因为它仅需要一个方法参数。
调用SubString()
分配一个新的字符串。为了获得最佳性能,应避免额外分配。首先,C# 7.2
您可以利用Span模式。
定位时.NET Framework
,请包括System.Memory NuGet
软件包。对于.NET Core
项目,此功能开箱即用。
static void Main(string[] args)
{
var str = "hello world!";
var span = str.AsSpan(10); // No allocation!
// Outputs: d!
foreach (var c in span)
{
Console.Write(c);
}
Console.WriteLine();
}