2014-09-11 18 views
-1

我想检查字符串中的多个单词并想替换它们。假设我的字符串是使用Contains方法检查字符串中的多个单词

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#的新手。请帮我出

+0

为什么不链接它们:'str = str.Replace(“(R)”,“”)。替换(“(work)”,“”);' – 2014-09-11 11:36:32

+0

使用您用于标记此问题的类:RegEx。从那里拿走。 – 2014-09-11 11:36:40

回答

1

你没有,如果需要,只是做:

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

如果你想有一个空间,你说或:

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

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

+0

这不会取代小写的'(r)',所以你需要链接它。 – petelids 2014-09-11 11:58:42

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

你可以告诉我elobarately – user3913759 2014-09-11 11:40:46

+0

你为什么用'\ b'打扰?序列'(R','(w','R)'和'k)'都包含'\ b',所以不需要检查它。 (此外,您需要在C#字符串中使用两个斜杠来实现此目的。) – Rawling 2014-09-11 12:10:56

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)]并用""替换任何实例做比较时忽略所述输入字符串的情况下(因此它匹配(R)(r))。

+1

没有匹配字符'('和'R'和'|'和'w'和'o'和'r'和'k'和') ' – 2014-09-11 12:00:48

+0

@walidtoumi然而无论如何,它都会得到提升。 – Rawling 2014-09-11 12:09:07

+0

@Rawling - 道歉。代码已更新,我赶紧测试代码! – petelids 2014-09-11 12:13:22

1

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

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

IDEONE

OR

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

IDEONE

模式说明:

  • (?i)i修饰符)会打开不区分大小写的模式。所以它会匹配大写和小写字母。与(符合。
  • (?:)非捕获组。
  • R|work匹配一个字母R或串work。(不区分大小写匹配)
  • \)匹配一个字面)符号。
相关问题