views:

1560

answers:

3

Hi,

I would like to find all special characters in a string and replace with a Hyphen (-)

I am using the below code

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

OutPut

foo-bar--regular-expression-replace----

I am getting multiple occurrence of hyphen (---) in the out put.

I would like to get some thing like this

foo-bar-regular-expression-replace

How do I achieve this

Any help would be appreciated

Thanks Deepu

+6  A: 

Try the pattern: "[^a-zA-Z]+" - i.e. replace one-or-more non-alpha (you might allow numeric, though?).

Marc Gravell
Thanks Marc This is working but ending with (-)
Deepu
+1  A: 

Wouldn't this work?

string pattern = "[^a-zA-Z]+";
Snarfblam
+1  A: 

why not just do this:

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();

        }
Richard
Awesome !!!! This is what I was looking thanks Richard.. Great Help
Deepu