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

124
如何忽略字符串的前10个字符?
输入:
str = "hello world!";

输出:

d!

9
字符串.Substring(9); 中的9是起始索引。 - Waqas
请记得先检查字符串至少有10个字符,否则您将会收到一个异常。 - Jonathan
为什么子字符串不支持(起始索引,结束索引)?每次我们都必须计算长度.. :-( - Sangram Nandkhile
1
@Waqas:实际上是str.Substring(10),其中参数是子字符串开始被提取的位置。 - Răzvan Flavius Panda
12个回答

266

str = str.Remove(0,10);

删除前十个字符。

或者

str = str.Substring(10);

创建一个从第11个字符到字符串结尾的子字符串。

对于您的目的,它们应该具有相同的作用。


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

你需要执行长度检查,否则可能会抛出错误


@DrorBar 在 C# 中,方法名采用 PascalCase 命名规则。substring() 不会编译,因为方法名应该是 Substring()。 - David Klempfner
@DavidKlempfner 我错了,我以为这是JavaScript。 - Dror Bar

19

像其他人指出的那样,子字符串可能是您想要的。但是,为了混合一些其他选项...

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

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


为了更好的可读性,你可以使用 ""。它在现今编译时与 string.Empty 完全相同。 - PRMan
它不会,""会创建一个新的字符串,而string.Empty则是引用一个。就性能而言并不重要(我的意思是只有一个空字符串,所以...),但我只是想指出这一点 :) - Zer0
确实不会创建一个新的字符串,可以参考这里 https://dev59.com/NXVC5IYBdhLWcg3wihqv#263257 - user604613

13

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!

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


6
< p > Substring 拥有一个名为 startIndex 的参数。将其设置为您想要开始的索引。


4
您可以使用以下代码行删除字符,
:- 首先检查该字符串是否有足够的字符可供删除,例如
   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }

4

从 C# 8 开始,您可以直接使用范围运算符。这是处理这种情况更高效和更好的方法。

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

当以.NET Framework为目标时,不支持C# 8。 - l33t

3
使用子字符串方法。
string s = "hello world";
s=s.Substring(10, s.Length-10);

2
如果字符串长度小于起始索引,则抛出异常。 - Răzvan Flavius Panda

1

您可以使用Substring方法,该方法接受一个参数,即要从哪个索引开始。

在下面的代码中,我处理了长度小于所需起始索引和长度为零的情况。

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

如果字符串长度小于10个字符,则当前返回字符串中的最后一个字符。 - Răzvan Flavius Panda

1

在使用Substring方法时不需要指定长度。

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

p将是:

"lo world".

唯一需要注意的例外情况是,如果startIndex小于零或大于此实例的长度,则需要处理ArgumentOutOfRangeException


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接