1

我有一个不好的单词表。如果字符串包含坏词列表中的任何项目/项目,我需要从字符串中删除该坏词。

List<string> badWordList = new List<string> { "email:", "index", "mobile:", "fax:", "web" };

我能够搜索字符串但无法删除。请帮帮我...我尝试了以下代码:

string myText = "email:abc@gmail.com";
if (badWordList.Any(w => myText.IndexOf(w, StringComparison.OrdinalIgnoreCase) >= 0))
{
    // How to remove
}

以下是预期输出的输入集:

  1. i/p- 电子邮件:abc@gmail.com

    o/p - abc@gmail.com

  2. i/p- Jack F. 手机:89788987

    o/p- Jack F. 89788987

  3. i/p- Jack F. 电子邮件:t@pc 手机:65777 WEB

    o/p- Jack F. t@pc 65777

我更喜欢非正则表达式方法。谢谢你的帮助。

4

5 回答 5

9

您可以迭代坏词并将其删除:

foreach (string badWord in badWordList) {
    myText = myText.Replace(badWord, string.Empty);
}

但是请注意,这种方法区分大小写,即它会删除“email:”,但不会删除“EMAIL:”。
如果您需要不区分大小写的解决方案,最简单的方法是使用正则表达式:

string myText = "EMAIL:abc@gmail.com";
Regex badWords = new Regex("email:|index|mobile:|fax:|web", RegexOptions.IgnoreCase | RegexOptions.Compiled);
myText = badWords.Replace(myText, string.Empty);
于 2013-06-24T11:11:52.933 回答
4

您可以通过将字符串替换为空字符串来删除字符串:

foreach (var badWord in badWordList)
{
    myText = myText.Replace(badWord, "");
}

不幸的是,这是区分大小写的。对于不使用正则表达式的不区分大小写的字符串替换,请参阅在.Net 中是否存在不区分大小写的字符串替换而不使用正则表达式?

您也可以使用正则表达式来执行此操作,在这种情况下,不区分大小写的比较“免费”提供:

var regex = String.Join("|", badWordList.Select(w => Regex.Escape(w)));
var myText = Regex.replace(myText, regex, "", RegexOptions.IgnoreCase);
于 2013-06-24T11:12:07.247 回答
1

将“坏词”的实例替换为string.Empty: -

List<string> badWordList = new List<string> { "email", "index:", "mobile:", "fax:", "web" };
string myText = "email:abc@gmail.com";

foreach (string s in badWordList)
{
    myText = myText.Replace(s,string.Empty);
}
于 2013-06-24T11:13:46.987 回答
1
            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;
            using System.Collections;
            namespace WindowMaker
            {
                class Program
                {

                    static void Main(string[] args)
                    {
                        System.Console.WriteLine("Enter Main string...");
                        String str = System.Console.ReadLine();
                        System.Console.WriteLine("Enter sub string...");
                        String sub = System.Console.ReadLine();
                        Boolean flag;
                        int strlen=sub.Length;
                        int inde = str.IndexOf(sub);
                        while (inde != -1)
                        {
                            inde = str.IndexOf(sub);
                            str=str.Replace(sub,"");

                        }
                        System.Console.WriteLine("Remaining string :: {0}",str);

                            Console.Read();
                    }

                }
            }

在此处输入图像描述

于 2015-01-26T16:54:14.897 回答
0

如果区分大小写:

List<String> badWordList = new List<String> { "email:", "index", "mobile:", "fax:", "web" };
String myText = "This is a exemple of Email: deleting with index and fax and web";

badWordList.ForEach(bw => myText = myText.Replace(bw, String.Empty));
于 2013-06-24T11:27:14.683 回答