0

この質問は何度も聞かれていると思いますが、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;

    }

別のスタックオーバーフローの質問からこれを取得しました。私が言ったように、これは単語全体に一致しています。文字列「テキスト」内の任意の場所にある「単語」リストと一致させてから、それを削除します。

たとえば、I have [apples] I have -apples I have apples と Peaches I Peaches have Apples I.Peaches have[Apples] のような文字列から、単語リストに含まれる Apples, Peaches という単語を削除したいとします。

単語リスト内では、「[」などを削除するために特殊文字も渡しますが、「.」も置き換えたいと考えています。スペースなどで...

したがって、リストは I have I have I have と I have I have になります

上記の正規表現を変更してこれを行うにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

代わりにこれはどうですか?

    public string stripify(string text, List<string> words)
    {
        var stripped = words.Aggregate(text, (input, word) => input.Replace(word, ""));
        return stripped.Replace('.', ' ');
    }
于 2012-04-19T03:38:14.380 に答える