我有一个字符串,我想删除前三个字符。我如何使用子串进行此操作,还是有其他方法?
string temp = "01_Barnsley"
string textIWant = "Barnsley"
谢谢
答案 0 :(得分:18)
您可以使用String.Substring(Int32)
method。
从此实例中检索子字符串。子字符串从a开始 指定的字符位置并继续到字符串的末尾。
string textIWant = temp.Substring(3);
这是 demonstration
。
作为替代方案,您也可以使用String.Remove method(Int32, Int32)
method。
返回一个新字符串,其中包含指定数量的字符 从指定位置开始的当前实例已被删除。
string textIWant = temp.Remove(0, 3);
这是 demonstration
。
答案 1 :(得分:3)
您可以使用String.Substring Method (Int32)
string textIWant = temp.Substring(3);
或 String.Remove Method (Int32, Int32)
string textIWant = temp.Remove(0,3);
答案 2 :(得分:1)
如果数据存在模式,可以使用它来使用正则表达式提取所需内容。
因此,如果有人知道有数字(\d
正则表达式为数字,而1或更多带有+
)后跟一个下栏;这是要排除的模式。现在我们通过使用( )
符号表示我们想要组匹配来告诉解析器我们想要捕获的内容。在该子组中,我们说使用.+
捕获所有内容。句点(.
)表示任何字符,之前看到的+
表示1或更多。
整个模式的完全匹配(不是我们想要的)被归类为索引零。我们希望索引1处的第一个子组匹配,这是我们的数据。
Console.WriteLine (Regex.Match("01_Barnsley", @"\d+_(.+)").Groups[1].Value); // Barnsley
Console.WriteLine (Regex.Match("9999_Omegaman", @"\d+_(.+)").Groups[1].Value); // Omegaman
请注意我们如何超过两位数而不必担心?由于数字增长,子字符串可能会失败,因为我们的模式中具有灵活性,因此正则表达式解析器不是问题。
如果数据存在明显的模式,并且数据可能会发生变化,请使用正则表达式。最小的学习曲线可以获得丰厚回报。如果你真的只需要一个不变的特定点,就可以使用子串。
答案 3 :(得分:0)
使用LINQ的解决方案:
string temp = "01_Barnsley";
string textIWant = new string(temp.Skip(3).ToArray());