0

从字符串开头删除几个字符的最佳方法是什么?

sName = "IMG: Testing again"  
sName = "TXT: This is amazing"

所以删除 IMG: 和 TXT.. 等...

所以我可以拥有这个吗?

sName = "Testing again"   
sName = "This is amazing"
4

6 回答 6

1

好吧,如果它始终是四个字符,您可以做到。sName = sName.Substring(5)

于 2013-10-17T19:25:38.087 回答
1

我个人喜欢这样的任务的简单正则表达式

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?”中多余的前导空格。

于 2013-10-17T19:30:35.950 回答
0

假设你总是使用 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(": ");
于 2013-10-17T19:27:28.940 回答
0
 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();
于 2013-10-17T19:28:56.473 回答
0

如果它是固定格式,我建议您进行拆分。查看代码。拆分后第一个索引将拥有您的项目。

var sName = sName.Split( new char[] {':'})[1].Trim();
于 2013-10-17T19:33:49.830 回答
0

你可以使用

sName = sName.SubString(4, sname.Length)

它将从第 4 个位置到字符串的最后一个位置的子字符串。

于 2013-10-17T19:36:05.320 回答