将所有特殊字符(包括空格)替换为-使用C#

本文关键字:替换 使用 空格 特殊字符 包括 | 更新日期: 2023-09-27 18:11:26

我想用C#将所有无法在URL中解析的Special Characters(包括空格、双空格或任何大空格(替换为'-'。

我不想使用任何类似System.Web.HttpUtility.UrlEncode的解析方法

如何做到这一点?我想在两个单词之间加任意数量的空格,只加一个"-">

例如,如果字符串为Hello# , how are you?
如果最后一个索引是任何特殊字符或空格,则Result应该是Hello-how-are-you,而不是'-。

将所有特殊字符(包括空格)替换为-使用C#

 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_]+", "-");

输入:你好#,你好吗?

输出:你好,

编辑:将其包裹在类中

   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;
            }
        }

像这样打电话,

 string Result = StringCheck.Checker();
string[] arr1 = new string[] { " ", "@", "&" };
newString = oldString;
foreach repl in arr1
{
    newString= newString.Replace(repl, "-");
}

当然,您可以将所有的spec字符添加到数组中,并通过它循环,而不仅仅是"。

有关替换方法的更多信息,请访问以下链接

您需要两个步骤来删除最后一个特殊字符,并用_ 替换所有剩余的一个或多个特殊字符

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