C#子字符串:删除前三个字符

3

我有一个字符串,我想将前三个字符删除。使用子字符串该怎么做,还是有其他方法?

string temp = "01_Barnsley"
string textIWant = "Barnsley"

谢谢你


3
我们需要开始像Slashdot一样将这些问题标记为“frist-post”,因为打字错误会导致竞相回答它。快速发布然后进入编辑狂潮! - x0n
1
你确定要删除前三个字符吗?我觉得你更想删除第一个下划线及其之前的所有内容。 - Steven Liekens
那个问题对于SO来说太深奥了。我的意思是,Google到底是什么? - Steven Liekens
这个回答解决了你的问题吗?如何从字符串中删除前10个字符?(https://dev59.com/rGw05IYBdhLWcg3whCNn) - Heretic Monkey
4个回答

21

你可以使用String.Substring(Int32)方法

从该实例中检索子字符串。子字符串从指定的字符位置开始,一直到字符串的末尾。

string textIWant = temp.Substring(3);

这里有一个演示

另外,您也可以使用String.Remove method(Int32, Int32)方法

返回一个新字符串,其中从指定位置开始的当前实例中指定数量的字符已被删除。

string textIWant = temp.Remove(0, 3);

这里是一个演示


谢谢!真不敢相信它是那么简单。我知道如何获取字符串的部分,但不知道如何删除开头的部分。 - Phil
我确实使用了谷歌,但是找不到解决这个特定问题的方法。 - Phil
@Phil 你在 Google 上具体搜索了什么? - Soner Gönül

3

谢谢你的帮助。 - Phil

1
如果数据有模式,可以使用正则表达式提取所需的内容。所以如果知道有数字(\d表示数字,使用+表示1个或多个)后面跟着一个下划线,那就是要排除的模式。现在我们告诉解析器我们想要捕获什么,通过使用( )符号来表示我们想要一个组匹配。在这个子组中,我们使用.+来表示捕获所有内容。句点(.)表示任何字符,前面已经见过的+表示1个或多个。整个模式的完整匹配(不是我们想要的)被分组为索引0。我们想要的第一个子组匹配在索引1处,也就是我们的数据。
Console.WriteLine (Regex.Match("01_Barnsley",   @"\d+_(.+)").Groups[1].Value); // Barnsley
Console.WriteLine (Regex.Match("9999_Omegaman", @"\d+_(.+)").Groups[1].Value); // Omegaman

请注意,我们不必担心它是否超过了两位数字?而子字符串可能会因为数字增长而失败,但是正则表达式解析器由于我们模式中发现的灵活性而不成问题。
总结
如果数据存在明显的模式,并且数据可能会改变,请使用正则表达式。最小的学习曲线可以带来丰厚的回报。如果您真的只需要在特定点上获取不变的内容,请使用子字符串。

0

使用LINQ的解决方案:

string temp = "01_Barnsley";
string textIWant = new string(temp.Skip(3).ToArray());

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