将所有特殊字符(包括空格)替换为-使用C#
本文关键字:替换 使用 空格 特殊字符 包括 | 更新日期: 2023-09-27 18:11:26
我想用C#将所有无法在URL
中解析的Special Characters
(包括空格、双空格或任何大空格(替换为'-'。
我不想使用任何类似System.Web.HttpUtility.UrlEncode
的解析方法
如何做到这一点?我想在两个单词之间加任意数量的空格,只加一个"-">
例如,如果字符串为Hello# , how are you?
如果最后一个索引是任何特殊字符或空格,则Result应该是Hello-how-are-you
,而不是'-。
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