【问题标题】:Regex replace substring from string正则表达式替换字符串中的子字符串
【发布时间】:2012-04-19 11:38:14
【问题描述】:

我认为这个问题已经被问过很多次了,但我还没有找到一个具有 C# 风格的问题(或者我不知道如何将它从 python/perl 等转换为 C#)。我正在创建一个函数,我希望它从字符串中删除匹配的字符串。

我希望它匹配整个单词和部分单词...这是我迄今为止匹配整个单词的内容:

public string regExRemove(string text, List <String> words)
    {

        string pattern =
            @"(?<=\b)(" +
            String.Join(
                "|",
                words
                    .Select(w => Regex.Escape(w))
                    .ToArray()) +
             @")(?=\b)";
        var regex = new Regex(pattern);
        string strReturn = regex.Replace(text, "");

        return strReturn;

    }

我从另一个 stackoverflow 问题中得到了这个。正如我所说,这是匹配整个单词。我希望它匹配字符串“文本”中任何位置的“单词”列表,然后将其删除。

例如,我想从字符串中删除单词 Apples、Peaches,它们将出现在单词列表中,例如 我有[苹果] 我有-苹果 我有苹果和桃子 我桃子有苹果 I.桃子有[苹果]

在单词列表中,我还将传递特殊字符以删除,即“[”,但我也想替换“。”带空格等...

所以列表变成 我有 我有 我有和 我有 我有

如何修改上面的正则表达式来做到这一点?

谢谢

【问题讨论】:

  • 为什么不只使用字符串替换方法foreach word in words,而for "."到“”等?
  • 很高兴我不必维护您的代码。
  • Yorye:是的,我想过,但是,我认为 Regex 是最好的方法。

标签: c# regex


【解决方案1】:

这个怎么样?

    public string stripify(string text, List<string> words)
    {
        var stripped = words.Aggregate(text, (input, word) => input.Replace(word, ""));
        return stripped.Replace('.', ' ');
    }

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多