2010-05-05 110 views
11

例如我有以下代碼 string txt =「我有西方和西方的字符串,西方和西方。」我可以在C#中使用String.Replace的正則表達式嗎?

我想用一些其他詞來替換West或West這個詞。但我不想在西方取代西方。

  1. 我可以在string.replace中使用正則表達式嗎?我用 inputText.Replace("(\\sWest.\\s)",temp);它不工作。

回答

17

要更換整個單詞(而不是字的一部分):

string s = Regex.Replace(s, @"\bwest\b", "something"); 
+0

看起來沒事,但這樣會忽略西部和西部。並且它是不區分大小寫的? – 2010-05-05 06:44:15

+0

我認爲它和我已經在做的一樣使用 's = s.Replace(「West」,「something」);' – 2010-05-05 06:50:11

+0

它的工作原理就像字符串s = Regex.Replace(s,@「(\ bwest \ b)」,「something」);.它適用於西方。西,西;以及。不明白爲什麼:) – 2010-05-05 07:06:51

5

你看着Regex.Replace?另外,一定要記住返回值; Replace(通過任何字符串機制)返回一個新的字符串 - 它不會進行就地替換。

3

嘗試使用System.Text.RegularExpressions.Regex類。它有一個靜態的Replace方法。我不擅長正則表達式,但像

string outputText = Regex.Replace(inputText, "(\\sWest.\\s)", temp); 

應該工作,如果你的正則表達式是正確的。

0

使用此代碼,如果你希望它是不區分大小寫

string pattern = @"\bwest\b"; 
string modifiedString = Regex.Replace(input, pattern, strReplacement, RegexOptions.IgnoreCase); 
0

我只是一個小改羅伯特·哈維的解決方案達成一致:

s = Regex.Replace(s, @"\bwest\b", "something", RegexOptions.IgnoreCase); 

這將取代雙方「西部大開發」和「西「用你的新單詞

0

在課前在代碼中插入正則表達式

0下面

是字符串中的代碼替換使用正則表達式

string input = "Dot > Not Perls"; 
// Use Regex.Replace to replace the pattern in the input. 
string output = Regex.Replace(input, "some string", ">"); 

來源:http://www.dotnetperls.com/regex-replace

18

問題的答案是NO - 你不能在使用與string.replace正則表達式。

如果你想使用正則表達式,你必須使用Regex類,正如每個人在他們的答案中所述。

+3

+1只回答直接回答問題,如果你可以使用String.Replace也用於正則表達式 – drkthng 2015-10-06 09:37:42

-1

class Regex是靜態的,當你使用方法Replace(Regex.Replace)。

public static class Extension 
{ 
     public static string ReplaceValue(string data,string criteria) 
     { 
       return s = Regex.Replace(s, @"\bwest\b", "something"); 
     } 
} 
+0

這看起來像一個問題。問*作爲一個問題。*另外,你發佈了這個非答案的問題,並在6年前回答。 – 2016-07-21 22:10:03

0

在Java中,String#replace接受正則表達式格式字符串,但C#可以做到這一點,以及使用擴展:

public static string ReplaceX(this string text, string regex, string replacement) { 
    return Regex.Replace(text, regex, replacement); 
} 

而且使用它像:

var text = "  space   more spaces "; 
text.Trim().ReplaceX(@"\s+", " "); // "space more spaces" 
相關問題