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" };
以下是预期输出的输入集:
我更喜欢非正则表达式的方法。谢谢您的帮助。您可以反复使用这些不好的词并将其删除:
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
不会替换任何内容。开始时,我想我会使用非正则表达式方法。但现在,我认为正则表达式将非常有用。谢谢一开始,我想我会采用非正则表达式的方法。但现在,我认为正则表达式将非常有用。谢谢