2014-09-11 41 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。(不區分大小寫匹配)
  • \)匹配一個字面)符號。
相關問題