如何从字符串中删除前 10 个字符?
Posted
技术标签:
【中文标题】如何从字符串中删除前 10 个字符?【英文标题】:How to remove first 10 characters from a string? 【发布时间】:2011-11-03 10:31:53 【问题描述】:如何忽略字符串的前 10 个字符?
输入:
str = "hello world!";
输出:
d!
【问题讨论】:
string.Substring(9);其中 9 是起始索引 记得先检查字符串是否至少有 10 个字符,否则会出现异常。 为什么子字符串不支持 (startIndex,endindex) ?每次我们必须计算长度.. :-( @Waqas:其实是str.Substring(10),参数是子串开始被提取的位置 【参考方案1】:str = str.Remove(0,10);
删除前 10 个字符
或
str = str.Substring(10);
创建从第 11 个字符开始到字符串末尾的子字符串。
出于您的目的,它们的工作方式应该相同。
【讨论】:
【参考方案2】:str = "hello world!";
str.Substring(10, str.Length-10)
您需要执行长度检查,否则会引发错误
【讨论】:
@DrorBar 在 C# 中,方法名称遵循 PascalCase。 substring() 不会编译,因为该方法被称为 Substring() @DavidKlempfner 糟糕,我以为这是 javascript。【参考方案3】:正如其他人指出的那样,子字符串可能是您想要的。但只是为了添加另一个选项......
string result = string.Join(string.Empty, str.Skip(10));
你甚至不需要检查这个长度! :) 如果它少于 10 个字符,你会得到一个空字符串。
【讨论】:
为了更好的可读性,您可以使用“”。现在它的编译方式与 string.Empty 完全相同。 它没有,"" 创建一个新字符串,而 string.Empty 引用一个。就性能而言并不重要(我的意思是它是一个空字符串,所以是的......)但只是想指出这一点:) "" 确实不会创建新字符串,请参阅此处***.com/a/263257/604613【参考方案4】: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!
如果您可以通过检查其长度来应用防御性编码。
【讨论】:
【参考方案5】:Substring
有一个名为 startIndex 的参数。根据你要开始的索引来设置。
【讨论】:
【参考方案6】:您可以使用以下 Line 删除 Char ,
:- 首先检查 String 是否有足够的字符来删除,比如
string temp="Hello Stack overflow";
if(temp.Length>10)
string textIWant = temp.Remove(0, 10);
【讨论】:
【参考方案7】:使用子串方法。
string s = "hello world";
s=s.Substring(10, s.Length-10);
【讨论】:
如果字符串比起始索引短则抛出异常【参考方案8】:你可以使用Substring方法,它接受一个参数,即开始的索引。
在我下面的代码中,我处理的情况是长度小于您想要的起始索引并且长度为零。
string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));
【讨论】:
当前如果字符串少于 10 个字符,则返回字符串的最后一个字符。【参考方案9】:为:
var str = "hello world!";
若要获得不含前 10 个字符的结果字符串,如果字符串的长度小于或等于 10,则为空字符串,您可以使用:
var result = str.Length <= 10 ? "" : str.Substring(10);
或
var result = str.Length <= 10 ? "" : str.Remove(0, 10);
首选第一个变体,因为它只需要一个方法参数。
【讨论】:
【参考方案10】:无需在Substring
方法中指定长度。
因此:
string s = hello world;
string p = s.Substring(3);
p
将是:
“世界”。
您需要满足的唯一例外是ArgumentOutOfRangeException
如果
startIndex
小于零或大于此实例的长度。
【讨论】:
【参考方案11】:从 C# 8 开始,您可以简单地使用范围运算符。这是处理此类情况的更有效和更好的方法。
string AnString = "Hello World!";
AnString = AnString[10..];
【讨论】:
C# 8
在定位 .NET Framework
时不受支持。【参考方案12】:
调用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();
【讨论】:
以上是关于如何从字符串中删除前 10 个字符?的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中从字节字符串中删除前 20 个字节的最快方法是啥?