Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-从字符串列表中查找并删除子字符串_C#_.net_String - Fatal编程技术网

C#-从字符串列表中查找并删除子字符串

C#-从字符串列表中查找并删除子字符串,c#,.net,string,C#,.net,String,我有一张坏单词表。如果字符串包含坏词列表中的任何项,我需要从字符串中删除该坏词 List<string> badWordList = new List<string> { "email:", "index", "mobile:", "fax:", "web" }; 以下是预期输出的输入集: i/p-电子邮件:abc@gmail.com o/p-abc@gmail.com i/p-杰克F.移动电话:89788987 o/p-千斤顶F.89788987 i/p-杰克F.电子

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

List<string> badWordList = new List<string> { "email:", "index", "mobile:", "fax:", "web" };
以下是预期输出的输入集:

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

    o/p-abc@gmail.com

  • i/p-杰克F.移动电话:89788987

    o/p-千斤顶F.89788987

  • i/p-杰克F.电子邮件:t@p.c手机号码:65777

    o/p-千斤顶F。t@p.c65777


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

    您可以反复使用这些不好的词并将其删除:

    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);
    

    您可以重复使用这些不好的单词并将其删除:

    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);
    

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

    foreach (var badWord in badWordList)
    {
        myText = myText.Replace(badWord, "");
    }
    
    不幸的是,这是区分大小写的。有关不区分大小写的字符串替换(不带正则表达式),请参见

    您也可以使用正则表达式来实现,在这种情况下,不区分大小写的比较是“免费的”:


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

    foreach (var badWord in badWordList)
    {
        myText = myText.Replace(badWord, "");
    }
    
    不幸的是,这是区分大小写的。有关不区分大小写的字符串替换(不带正则表达式),请参见

    您也可以使用正则表达式来实现,在这种情况下,不区分大小写的比较是“免费的”:


    字符串替换“bad word”的实例。空的
    :-

    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);
    }
    
    List badWordList=新列表{“email”、“index:”、“mobile:”、“fax:”、“web”};
    string myText=“电子邮件:abc@gmail.com";
    foreach(badWordList中的字符串s)
    {
    myText=myText.Replace(s,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);
    }
    
    List badWordList=新列表{“email”、“index:”、“mobile:”、“fax:”、“web”};
    string myText=“电子邮件:abc@gmail.com";
    foreach(badWordList中的字符串s)
    {
    myText=myText.Replace(s,string.Empty);
    }
    
    如果区分大小写:

    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));
    
    List badWordList=新列表{“email:”,“index”,“mobile:”,“fax:”,“web”};
    String myText=“这是电子邮件的一个示例:使用索引、传真和web进行删除”;
    ForEach(bw=>myText=myText.Replace(bw,String.Empty));
    
    如果区分大小写:

    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));
    
    List badWordList=新列表{“email:”,“index”,“mobile:”,“fax:”,“web”};
    String myText=“这是电子邮件的一个示例:使用索引、传真和web进行删除”;
    ForEach(bw=>myText=myText.Replace(bw,String.Empty));
    


    正则表达式有问题吗?这总是更快更方便。
    myText=myText.Replace(badWordList.First(i=>myText.IndexOf(w,StringComparison.OrdinalIgnoreCase)>=0),“”)一般来说,如果这将处理用户输入,请确保它不会。@Kangkan:正则表达式没有问题。@PLB答案不应该作为注释,无论答案多么简单,它都是一个答案。@PhilipGullick这不是一个解决方案,因为它在许多情况下会失败,对未来的读者没有帮助。正则表达式有问题吗?这总是更快更方便。
    myText=myText.Replace(badWordList.First(i=>myText.IndexOf(w,StringComparison.OrdinalIgnoreCase)>=0),“”)
    一般来说,如果这将处理用户输入,请确保它不会。@Kangkan:正则表达式没有问题。@PLB答案不应作为注释,无论答案多么简单,它都是一个答案。@PhilipGullick这不是一个解决方案,因为它在许多情况下都会失败,对未来的读者没有帮助。我要说的唯一一件事是,
    IndexOf
    检查是不必要的,因为
    .Replace
    不会替换任何东西,如果另一个字符串中不存在提供给它的
    string
    。我要说的唯一一件事是,
    IndexOf
    检查是不必要的,因为如果另一个字符串中不存在指定给它的
    .Replace
    字符串,那么
    .Replace
    不会替换任何内容。开始时,我想我会使用非正则表达式方法。但现在,我认为正则表达式将非常有用。谢谢一开始,我想我会采用非正则表达式的方法。但现在,我认为正则表达式将非常有用。谢谢