2009-11-22 116 views
2

我想找到所有特殊字符的字符串,用連字符替換(-替換所有特殊字符的字符串在C#

我使用下面的代碼

string content = "foo,bar,(regular expression replace) 123";  
string pattern = "[^a-zA-Z]"; //regex pattern 
string result = System.Text.RegularExpressions.Regex.Replace(content,pattern, "-"); 

輸出

富巴 - 正則表達式替換----

我在輸出中出現了多個連字符(---)。

我想獲得一些這樣的事

富吧,正則表達式替換

如何做到這一點

任何幫助,將不勝感激

謝謝 深度

回答

9

試試模式:"[^a-zA-Z]+" - 即替換一個或多個非alpha(儘管可能允許數字)。

+0

感謝馬克這是工作,但結尾( - ) – Deepu 2009-11-22 14:54:17

1

這不工作?

string pattern = "[^a-zA-Z]+"; 
11

爲什麼不只是這樣做:

public static string ToSlug(this string text) 
     { 
      StringBuilder sb = new StringBuilder(); 
      var lastWasInvalid = false; 
      foreach (char c in text) 
      { 
       if (char.IsLetterOrDigit(c)) 
       { 
        sb.Append(c); 
        lastWasInvalid = false; 
       } 
       else 
       { 
        if (!lastWasInvalid) 
         sb.Append("-"); 
        lastWasInvalid = true; 
       } 
      } 

      return sb.ToString().ToLowerInvariant().Trim(); 

     } 
+0

真棒!!!!這正是我在尋找感謝理查德..偉大的幫助 – Deepu 2009-11-22 14:53:04