场景:
有一个名为“AJAX,JSON& HTML5!网络的未来?”的标题 想将此转换为“ajax-json-html5-the-future-of-web”
基本上我需要的是一个删除所有非字母表的函数,然后用一个连字符和小写字母替换它们。
问题:
通过一些努力,我可以用String.Replace
或String.CharAt
做到这一点,但我认为这太混乱了。我对么?我相信Regex是要走的路。由于我的正则表达式非常生疏,我无法得到显示所需输出的东西。:)
免责声明:这基本上是给我一个Codez。但我猜我已经完全覆盖了我的选择。
答案 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, "-+", "-");