2014-01-27 84 views

回答

40

是的,你可以在C#中使用regular expressions

Using regular expressions with C#

using System.Text.RegularExpressions; 

string your_String = "[email protected]&Hello(Hello)"; 
string my_String = Regex.Replace(your_String, @"[^0-9a-zA-Z]+", ","); 
+1

'Convert.ToString(your_String)'eh? – tnw

+1

是的,沒有必要使用「轉換」。謝謝@tnw –

+0

@tnw同意,爲什麼在value不爲null時調用'Convert.ToString(your_string)',你可以直接爲'System.Text.RegularExpressions'調用'your_string.ToString()' –

7

您可以使用正規表示法,以例如用逗號替換所有非字母數字字符:

s = Regex.Replace(s, "[^0-9A-Za-z]+", ","); 

注:+後的設定將使它取代各組的非字母數字字符用逗號。如果要用逗號替換每個字符,只需刪除+即可。

+3

爲什麼downvote?如果你不解釋你認爲什麼是錯的,它不能改善答案。 – Guffa

+0

我不明白爲什麼答案是downvoted,因爲其他upvoted(也是公認的)答案說同樣的事情。但我只能一次答覆一個答案。 –

+0

如果我想允許連字符,該怎麼辦?這將工作 s = Regex.Replace(s,「[^ 0-9A-Za-z-] +」,「,」); –

9

假設要更換哪些不是數字或字母(和_字符作爲@Guffa正確地指出)符號:

string input = "[email protected]&Hello(Hello)"; 
string result = Regex.Replace(input, @"[^\w\d]", ","); 
// Hello,Hello,Hello,Hello, 

您可以添加不應該被替換另一個符號。例如。如果你想空白符號留下來,然後只需添加\s以圖案:\[^\w\d\s]

+3

'\ w'不僅僅匹配字母,它也匹配'_'。 – Guffa

+1

@Guffa謝謝,好貼。如果_被認爲是特殊字符,那麼'a-zA-Z'更合適 –

3

而且,它可以與LINQ

var str = "[email protected]&Hello(Hello)"; 
var characters = str.Select(c => 
     { 
      if (!char.IsLetter(c)) return ','; 
      return c; 
     }).ToArray(); 

    var output = new string(characters); 
    Console.WriteLine(output); 
相關問題