如何从字符串中删除前10个字符?

时间:2011-08-25 07:35:04

标签: c# asp.net .net string substring

如何忽略字符串的前10个字符?

输入:

str = "hello world!";

输出:

d!

12 个答案:

答案 0 :(得分:188)

str = str.Remove(0,10); 删除前10个字符

str = str.Substring(10); 创建一个从第11个字符开始到字符串结尾的子字符串。

出于您的目的,他们应该完全相同。

答案 1 :(得分:82)

str = "hello world!";
str.Substring(10, str.Length-10)

你需要执行长度检查,否则会引发错误

答案 2 :(得分:14)

其他人指出,子串可能就是你想要的。但只是为混合添加另一个选项......

string result = string.Join(string.Empty, str.Skip(10));

你甚至不需要检查它的长度! :)如果它少于10个字符,你会得到一个空字符串。

答案 3 :(得分:6)

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!

如果您可以通过检查其长度来应用防御性编码。

答案 4 :(得分:5)

Substring有一个名为startIndex的参数。根据您要开始的索引进行设置。

答案 5 :(得分:2)

您可以使用以下行删除字符,

: - 首先检查字符串是否有足够的字符串删除,例如

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }

答案 6 :(得分:1)

使用子字符串方法。

string s = "hello world";
s=s.Substring(10, s.Length-10);

答案 7 :(得分:1)

您可以使用采用单个参数的方法Substring方法,该参数是从中开始的索引。

在下面的代码中我处理的情况是长度小于你想要的起始指数,长度是零。

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));

答案 8 :(得分:1)

有关:

var str = "hello world!";

要获得没有前10个字符的结果字符串,并且如果字符串的长度小于或等于10,则可以使用空字符串:

var result = str.Length <= 10 ? "" : str.Substring(10);

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

首选变体是首选,因为它只需要一个方法参数。

答案 9 :(得分:0)

无需在Substring方法中指定长度。 因此:

string s = hello world;
string p = s.Substring(3);

p将是:

  

“lo world”。

您需要满足的唯一例外是ArgumentOutOfRangeException if startIndex小于零或大于此实例的长度。

答案 10 :(得分:0)

从C#8开始,您只需使用范围运算符即可。这是处理此类案件的更有效,更好的方法。

string AnString = "Hello World!";
AnString = AnString[10..];

答案 11 :(得分:0)

调用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();
}