如何使用 String.Replace

本文关键字:Replace String 何使用 | 更新日期: 2023-09-27 18:33:55

快速问题:

我有这个字符串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 迈尔"

并且会得到输出:卢卡·霍斯特勒,汉斯·迈耶,而无需手动将代码更改为m_Editor.Replace("14;#", ""), m_Editor.Replace("15;#", "")......?

如何使用 String.Replace

听起来你想要一个"至少一个数字,然后是分号和哈希"的正则表达式,并带有"仅在字符串开头"的锚点:

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 可以是非数字
  • 可能还有其他可忽略的部分,您只需要最后一个哈希之后的值
您可以使用

正则表达式或(我更喜欢的)IndexOf + Substring

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

或者只是,

var author = m_Author.Split('#').Last();
您可以使用

字符串将字符串与#拆分。Split() 函数 这将给你两个字符串,首先是 # 之前的所有内容,其次是 #

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

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

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

该示例将产生Firstname Lastname

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