从字符串开头删除几个字符的最佳方法是什么?
sName = "IMG: Testing again"
sName = "TXT: This is amazing"
所以删除 IMG: 和 TXT.. 等...
所以我可以拥有这个吗?
sName = "Testing again"
sName = "This is amazing"
好吧,如果它始终是四个字符,您可以做到。sName = sName.Substring(5)
我个人喜欢这样的任务的简单正则表达式。
var result = Regex.Replace(input, @"^[A-Z]+:\s*", "");
这与它将删除的其他方法的语义略有不同,因此这里解释了匹配(另请参阅正则表达式快速参考)。
^ # anchor match to start of input
[A-Z]+ # match one or more capital English-alphabet characters
: # match a colon
\s* # match zero or more spaces
因此,这种方法也匹配“HELLOWORLDILOVEYOU:said Fred”之类的输入,并去掉“TXT: Wut?”中多余的前导空格。
假设你总是使用 format {TYPE}: {Text}
,并且你想要{Text}
,使用这个:
int index = sName.IndexOf(':') + 2; // two: one for the colon and one for the space
sName = sName.Substring(index);
当然,这可以放在一行中;为了清楚起见,我将其分为两部分。
您还可以为一般情况制作扩展方法:
public static string SubstringAfter(this string str, string sequence)
{
int index = str.IndexOf(sequence);
if (index > -1)
{
return str.Substring(str.IndexOf(sequence) + sequence.Length);
}
return str;
}
这使您可以这样做:
sName = sName.SubstringAfter(": ");
sName = sName.Remove(0,5); //simple but not perfect way
编辑:
sName= sName.Split(':')[1]; //For splitting by ':'
sName = sName.Remove(0,1); //For the space, or use sName.Trim();
如果它是固定格式,我建议您进行拆分。查看代码。拆分后第一个索引将拥有您的项目。
var sName = sName.Split( new char[] {':'})[1].Trim();
你可以使用
sName = sName.SubString(4, sname.Length)
它将从第 4 个位置到字符串的最后一个位置的子字符串。