Я хотел бы написать метод С#, который преобразует любой заголовок в строку, удобную для URL, аналогично тому, что делает переполнение стека:
- заменить пробелы тире
- убрать скобки
- и т.п.
Я думаю об удалении зарезервированных символов в соответствии со стандартом RFC 3986 (из Википедии), но я не знаю, будет ли этого достаточно? Это сделало бы ссылки работоспособными, но кто-нибудь знает, какие другие символы заменяются здесь в stackoverflow? Я не хочу заканчивать с% -s в моих URL...
Текущая реализация
string result = Regex.Replace(value.Trim(), @"[!*'""'();:@&+=$,/\\?%#\[\]<>«»{}_]");
return Regex.Replace(result.Trim(), @"[\s*[\-–—\s]\s*]", "-");
Мои вопросы
- Какие символы я должен удалить?
- Должен ли я ограничить максимальную длину результирующей строки?
- Кто-нибудь знает, какие правила применяются к заголовкам здесь, на SO?