我的单词列表不好。如果一个字符串包含坏词列表中的任何项目/项目,我需要从字符串中删除该坏词。
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
}
以下是预期输出的输入集:
i / p- email:abc@gmail.com
o / p - abc@gmail.com
i / p- Jack F. Mobile:89788987
o / p- Jack F. 89788987
i / p- Jack F.电子邮件:t@p.c mobile:65777 WEB
o / p- Jack F. t@p.c 65777
我更喜欢非正则表达式方法。谢谢你的帮助。
答案 0 :(得分:9)
你可以迭代坏词并删除它们:
foreach (string badWord in badWordList) {
myText = myText.Replace(badWord, string.Empty);
}
但请注意,此方法区分大小写,即它会删除“email:”但不会删除“EMAIL:”。
如果您需要不区分大小写的解决方案,最简单的方法是使用Regex:
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);
答案 1 :(得分:4)
您可以使用空字符串替换字符串来删除字符串:
foreach (var badWord in badWordList)
{
myText = myText.Replace(badWord, "");
}
不幸的是,这是区分大小写的。对于没有正则表达式的不区分大小写的字符串替换,请参阅Is there a case insensitive string replace in .Net without using Regex?
您也可以使用正则表达式执行此操作,在这种情况下,不区分大小写的比较“免费”:
var regex = String.Join("|", badWordList.Select(w => Regex.Escape(w)));
var myText = Regex.replace(myText, regex, "", RegexOptions.IgnoreCase);
答案 2 :(得分: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);
}
答案 3 :(得分: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();
}
}
}
答案 4 :(得分: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));