Replace All Special Characters Including Space with - Using C#

Replace All Special Characters Including Space with - Using C#

I want to replace all Special Characters which can't be parse in URL including space, double space or any big space with '-' using C#.

I don't want to use any Parse Method like System.Web.HttpUtility.UrlEncode.

How to do this ? I want to include any number of space between two words with just one '-'.

For example, if string is Hello# , how are you?
Then, Result should be, Hello-how-are-you, no '-' if last index is any special character or space.

3

3 Answers

 string str = "Hello# , how are you?";
 string newstr = "";
 //Checks for last character is special charact
 var regexItem = new Regex("[^a-zA-Z0-9_.]+");
 //remove last character if its special
 if (regexItem.IsMatch(str[str.Length - 1].ToString()))
 {
   newstr =   str.Remove(str.Length - 1);            
 }
 string replacestr = Regex.Replace(newstr, "[^a-zA-Z0-9_]+", "-");

INPUT: Hello# , how are you?

OUTPUT: Hello-how-are-you

EDIT: Wrap it inside a class

   public static class StringCheck
        {
            public  static string Checker()
            {
                string str = "Hello# , how are you?";
                string newstr = null;
                var regexItem = new Regex("[^a-zA-Z0-9_.]+");
                if (regexItem.IsMatch(str[str.Length - 1].ToString()))
                {
                    newstr = str.Remove(str.Length - 1);
                }
                string replacestr = Regex.Replace(newstr, "[^a-zA-Z0-9_]+", "-");
                return replacestr;
            }

        }

and call like this,

 string Result = StringCheck.Checker();
2
string[] arr1 = new string[] { " ", "@", "&" };

newString = oldString;
foreach repl in arr1
{
    newString= newString.Replace(repl, "-");
}

Of course you can add into an array all of your spec characters, and looping trough that, not only the " ".

More about the replace method at the following link

1

You need two steps to remove last special character and to replace all the remaining one or more special characters with _

public static void Main()
{
  string str = "Hello# , how are you?";
  string remove = Regex.Replace(str, @"[\W_]$", "");
  string result = Regex.Replace(remove, @"[\W_]+", "-");
  Console.WriteLine(result);
  Console.ReadLine();
}

IDEONE

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sophia Al-Mansoor
Author

Sophia Al-Mansoor

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.