Deepu
Deepu

Reputation: 21

Replace all Special Characters in a string IN C#

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

Upvotes: 2

Views: 22382

Answers (3)

Richard
Richard

Reputation: 22036

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

        }

Upvotes: 11

snarf
snarf

Reputation: 2862

Wouldn't this work?

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

Upvotes: 1

Marc Gravell
Marc Gravell

Reputation: 1064104

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

Upvotes: 10

Related Questions