将输入字符串转换为干净,可读且浏览器可接受的路径数据

时间:2011-06-09 10:56:23

标签: c# asp.net

场景:

有一个名为“AJAX,JSON& HTML5!网络的未来?”的标题 想将此转换为“ajax-json-html5-the-future-of-web”

基本上我需要的是一个删除所有非字母表的函数,然后用一个连字符和小写字母替换它们。

问题:

通过一些努力,我可以用String.ReplaceString.CharAt做到这一点,但我认为这太混乱了。我对么?我相信Regex是要走的路。由于我的正则表达式非常生疏,我无法得到显示所需输出的东西。:)
免责声明:这基本上是给我一个Codez。但我猜我已经完全覆盖了我的选择。

2 个答案:

答案 0 :(得分:7)

使用正则表达式的一个例子 - 这应该让你朝着正确的方向(编辑 - 添加清除尾随破折号,使其看起来更好)

    var input = "This is some amazing Rexex Stuff!";
            input = Regex.Replace(input, @"[\W]+", "-").ToLower();
            input = Regex.Replace(input, @"[-]+$", "");
            Console.Write(input);
            Console.Read();

答案 1 :(得分:2)

这是我过去常用的一些代码,它并不完美,但它应该让你开始:

编辑:仍然很难看,但输出更好:ajax-json-html5-the-future-of-web-

string title = "AJAX, JSON & HTML5! The future of web?";

title = Regex.Replace(title, @"&|&", "-");

StringBuilder builder = new StringBuilder();

for (int i = 0; i < title.Length; i++)
{
    if (char.IsLetter(title[i]) || char.IsDigit(title[i]))
        builder.Append(title[i]);
    else
        builder.Append('-');
}
string result = builder.ToString().ToLower();
result = Regex.Replace(result, "-+", "-");