У меня есть серия зашифрованных строк, которые я использую как идентификаторы в веб-приложении C#/ASP.Net. Мне нужно использовать их в атрибуте id
, однако строка содержит недопустимые символы (допустимые символы - «[A-Za-z0-9 -_ :.]»). Мне нужен двухсторонний конвертер, который отображает мои зашифрованные строки на этот небольшой набор. Что-то вроде Base64, но меньше.Base64-подобный преобразование строк, для меньшего набора символов
Каковы мои альтернативы? Существуют ли для этого стандартные алгоритмы, или это достаточно странно, я должен сам это придумать?
В случае, если кому-то это нужно, вот что я в итоге сделал. Замените недействительные символы и удалите padding = char. Затем отмените это, чтобы вернуться.
private static string MakeReferenceJavascriptCompatible(string reference)
{
return reference.Replace("+", "_")
.Replace("/", "-")
.Replace("=", "");
}
private static string UndoMakeReferenceJavascriptCompatible(string reference)
{
int padding = 4 - (reference.Length % 4);
return reference.Replace("-", "/")
.Replace("_", "+")
.PadRight(reference.Length + padding, '=');
}
Я удивлен не понял, что я должен считать доступные символы ... Но, к сожалению, оказывается, что jQuery не нравится: и. в Идах, поэтому их все равно недостаточно. Хорошая идея! – carlpett
Около 1 часа ночи я все равно делал это с помощью «-», «_» и «---» в качестве замещающих строк. Наверное, в один прекрасный день я кусаю меня, хотя ... – carlpett
Это не здорово, нет. Возможно, вам удастся удалить отступы и просто вернуть его позже в зависимости от длины строки. Таким образом вам нужно всего 64 символа вместо 65. Помогает ли это? –