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

Dee*_*epu 2 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, "-"); 
Run Code Online (Sandbox Code Playgroud)

产量

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

我在输出中得到多次连字符(---).

我想得到一些像这样的东西

FOO-BAR-正则表达式替换

我如何实现这一目标

任何帮助,将不胜感激

谢谢Deepu

Ric*_*ard 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();

        }
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 10

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