2009-11-22 139 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