Преобразование входной строки в чистые, читаемые и приемлемые для браузера данные маршрута


Сценарий:

Есть заголовок под названием "AJAX, JSON & HTML5! Будущее сети?"
Хотел бы обменять это на это "Аякс-с JSON-поддержка HTML5-будущее в паутине"

В основном мне нужна функция, которая удаляет все не алфавиты,а затем заменяет их одним дефисом и строчными буквами.

Задача:

С некоторым усилием я мог бы сделать это с String.Replace или String.CharAt, но я думаю, что все это слишком грязно. Я не ошибаюсь? Я верю, что Regex-это путь, по которому нужно идти. Как моя Регулярное выражение очень ржавое я не могу получить что-то, что показывает желаемый результат.:)
Отказ от ответственности: это в основном Дайте мне Кодез. Но я в значительной степени рассмотрел свои варианты, я думаю.

2   5   2011-06-09 14:56:23

2 ответа:

Пример использования регулярных выражений-это должно помочь вам в правильном направлении (Edit-добавлено очищение от трейлинг-тире, чтобы оно выглядело лучше)

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

Вот код, который я использовал для этого некоторое время назад, он не идеален, но он должен помочь вам начать:

EDIT: все еще некрасиво, но вывод лучше: 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, "-+", "-");