我希望使用C#替换Special Characters
中无法解析的所有URL
,包括空格,双空格或任何带有' - '的大空格。
我不想使用System.Web.HttpUtility.UrlEncode
之类的任何解析方法。
这该怎么做 ?我想在两个单词之间包含任意数量的空格,只有一个' - '。
例如,如果字符串是Hello# , how are you?
然后,如果最后一个索引是任何特殊字符或空格,则结果应为Hello-how-are-you
,否为' - '。
答案 0 :(得分:1)
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:强> 你好#,你好吗?
<强>输出:强> 您好,如何-是,你
修改强> 将它包装在一个类
中 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();
答案 1 :(得分:0)
string[] arr1 = new string[] { " ", "@", "&" };
newString = oldString;
foreach repl in arr1
{
newString= newString.Replace(repl, "-");
}
当然,您可以将所有特殊字符添加到数组中,并循环使用,而不仅仅是&#34; &#34;
有关以下link
的替换方法的更多信息答案 2 :(得分:0)
您需要两个步骤来删除最后一个特殊字符,并用_
替换所有剩余的一个或多个特殊字符
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();
}