Культура конкретных символов в хороший формат URL - PullRequest
1 голос
/ 09 апреля 2010

Мне нужны некоторые функциональные возможности, чтобы сделать следующую строку в удобном для URL формате: "knæ som gør" должно быть "kna-som-gor"

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

Использование .Net и C #

Пожалуйста, помогите мне:)

/ Andreas

Ответы [ 3 ]

0 голосов
/ 09 апреля 2010

Вы можете найти решение, которое удаляет диакритические знаки здесь: Как удалить диакритические знаки (акценты) из строки в .NET? . Однако это решение не поможет вам с æ или ø.

Может быть, это удалит достаточно ваших специальных символов, чтобы остальные можно было перевести с помощью простой замены?

Если «url-friendly» не означает «симпатичный», вы также можете использовать HttpUtility.UrlEncode, который производит "Кп% C3% а6 + сом + д% C3% b8r".

0 голосов
/ 09 апреля 2010

Редактировать: Добавлено возможное решение (конец сообщения).

У меня была очень похожая проблема, хотя для имен файлов, а не для URL. Кажется, что основная проблема заключается в том, что не существует стандартного способа запросить «лучшую замену ASCII для ø», поэтому даже если вы можете найти все нежелательные символы, сложно автоматизировать, какую замену вставить.

Я разместил довольно много кода, который может быть полезен. Подробнее см. в этом вопросе StackOverflow .

Редактировать: Я думаю, что решение этой проблемы заключается в StringInfo , который позволяет перебирать суб-символы (суррогаты Unicode или комбинирующие символы) в строке. Это должно позволить обнаружить и преобразовать что-то вроде å (которое может быть закодировано в Unicode как A-WITH-RING или RINGED-A; отфильтровать декоратор и сохранить часть, которая является нормальным символом).

0 голосов
/ 09 апреля 2010

Не усложняй вещи. :)

Либо используйте регулярное выражение, либо просто используйте String.Replace .

...