如何使用String.Replace

时间:2014-12-11 13:48:44

标签: c# string replace

快速提问:

我有这个字符串m_Author, m_Editor但是我在字符串中有一些奇怪的ID内容,所以如果我做WriteLine它会看起来像:

  

' 16; #Luca Hostettler'

我知道我可以做到以下几点:

    string author = m_Author.Replace("16;#", "");
    string editor = m_Editor.Replace("16;#", "");

之后我会得到这个名字, 但我认为将来我会有其他人和其他身份证。

所以问题:我可以告诉String.Replace("#AndEverythingBeforeThat", "") 所以我也可以

  

' 14; #Luca Hostettler'

     

' 15; #Hans Meier'

并且会得到输出:Luca Hostettler,Hans Meier,而不是手动将代码更改为m_Editor.Replace("14;#", ""), m_Editor.Replace("15;#", "") ...?

7 个答案:

答案 0 :(得分:9)

听起来你想要一个&#34;至少一个数字的正则表达式,然后是分号和散列&#34;,只有在字符串的开头#34;:< / p>

string author = Regex.Replace(m_Author, @"^\d+;#", "");

或者让它更可重复使用:

private static readonly Regex IdentifierMatcher = new Regex(@"^\d+;#");
...
string author = IdentifierMatcher.Replace(m_Author, "");
string editor = IdentifierMatcher.Repalce(m_Editor, "");

请注意,如果符合以下条件,可能会有不同的解决方案:

  • ID可以是非数字
  • 可能还有其他可忽略的部分,您只需要最后一次散列后的值

答案 1 :(得分:4)

您可以使用正则表达式或(我更喜欢)IndexOf + Substring

int indexOfHash = m_Author.IndexOf("#");
if(indexOfHash >= 0)
{
    string author = m_Author.Substring(indexOfHash + 1);
}

答案 2 :(得分:1)

或只是,

var author = m_Author.Split('#').Last();

答案 3 :(得分:1)

你可以用#使用string.Split()函数将你的字符串拆分,这将为你提供两个字符串##之后的所有内容以及#

之后的所有内容

答案 4 :(得分:0)

使用String.Format

    int number=5;
    string userId = String.Format("{0};#",number)
    string author = m_Author.Replace(userId, "");

答案 5 :(得分:0)

如果您只想过滤掉所有非字母或空格的内容,请尝试:

var originalName = "#123;Firstname Lastname";
var filteredName = new string(originalName
                                 .Where(c => Char.IsLetter(c) || 
                                             Char.IsWhiteSpace(c))
                                 .ToArray());

该示例将生成Firstname Lastname

答案 6 :(得分:0)

List<char> originalName = "15;#Hans Meier".ToList();
string newString = string.Concat(originalName.Where(x => originalName.IndexOf(x) > originalName.IndexOf('#')).ToList());