使用Contains方法检查字符串中的多个单词

时间:2014-09-11 11:33:19

标签: c# regex linq

我想检查字符串中的多个单词并想要替换它们。假设我的字符串是

str= 20148(R)/(work)24553(r)
if(str.contains(("R)" || str.Contains("(work)"))
{
   //Here I have to replace (R) and (Work) with space "". 
   // so that my string should be like this 20148/24553
}

如何在一个流程中使用循环来检查多个单词。 我是c#的新手。请帮帮我

4 个答案:

答案 0 :(得分:1)

您不需要if,只需执行:

var newStr = str.Replace("(R)"," ").Replace("(work)"," ");

如果您想要一个空格,或者:

var newStr = str.Replace("(R)",string.Empty).Replace("(work)",string.Empty);

如果你想要一个空字符串。

答案 1 :(得分:1)

您可以使用Regex.Replace方法。

string str = "20148(R)/(work)24553(r)";
string str2 = Regex.Replace(str, "[(](?:R|work)[)]", "", RegexOptions.IgnoreCase);
Console.Writeline(str2); //prints 20148/24553

这表示取字符串str并匹配模式[(R|work)]并用""替换所有实例,在进行比较时忽略输入字符串的大小写(因此它匹配{{1} }和(R))。

答案 2 :(得分:1)

Rr放在字符类中以匹配两个字母。

string str = "20148(R)/(work)24553(r)";
string result = Regex.Replace(str, @"\((?:[Rr]|work)\)", "");
Console.WriteLine(result);

IDEONE

string str = "20148(R)/(work)24553(r)";
string result = Regex.Replace(str, @"(?i)\((?:R|work)\)", "");
Console.WriteLine(result);

IDEONE

模式说明:

  • (?i) i modifier )会打开不区分大小写的模式。所以它会匹配大写和小写字母。
  • \(匹配文字(符号。
  • (?:)非捕获组。
  • R|work匹配字母R或字符串work。(不区分大小写的匹配)
  • \)匹配文字)符号。

答案 3 :(得分:0)

使用正则表达式,您可以替换此

[(]\b(?:R|work)\b[)]

使用空字符串""

编辑:

 string str1 = "20148(R)/(work)24553(r)"; 
  string str2 = Regex.Replace(str1, "[(]\b(?:R|work)\b[)]", "", RegexOptions.IgnoreCase);
  Console.Writeline(str2);