替换字符串中的所有特殊字符IN C#

时间:2009-11-22 14:42:36

标签: c# replace character

我想在字符串中找到所有特殊字符并替换为连字符( -

我正在使用以下代码

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

输出

  

FOO巴 - 正则表达式替换----

我在输出中多次出现连字符(---)。

我想得到像这样的东西

  

FOO-BAR-正则表达式替换

我如何实现这个

任何帮助将不胜感激

由于 迪普

3 个答案:

答案 0 :(得分: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();

        }

答案 1 :(得分:10)

尝试使用模式:"[^a-zA-Z]+" - 即替换一个或多个非alpha(但您可能允许使用数字?)。

答案 2 :(得分:1)

这不会起作用吗?

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