如何从字符串中删除前 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 个字节的最快方法是啥?

从 Python 数据框的一列中的每一行中删除前 x 个字符

如何以编程方式从 NSString 中删除特定字符?

Symfony 从路由中删除前三个字符

如何从字符串中获取前5个字符[重复]