Преобразование входной строки в чистые, читаемые и приемлемые для браузера данные маршрута - PullRequest
5 голосов
/ 09 июня 2011

Сценарий:

Существует заголовок под названием "AJAX, JSON & HTML5! Будущее сети?"
Хотите преобразовать это в этот "ajax-json-html5-the-future-of-web "

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

Проблема:

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

Ответы [ 2 ]

7 голосов
/ 09 июня 2011

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

    var input = "This is some amazing Rexex Stuff!";
            input = Regex.Replace(input, @"[\W]+", "-").ToLower();
            input = Regex.Replace(input, @"[-]+$", "");
            Console.Write(input);
            Console.Read();
2 голосов
/ 09 июня 2011

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

РЕДАКТИРОВАТЬ: все еще некрасиво, но вывод лучше: 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, "-+", "-");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...