Кто-нибудь знает об алгоритме (или внешней библиотеке), который я мог бы вызвать, чтобы преобразовать произвольную строку (т. Е. Вне моего контроля) в соответствие с CLS?Как преобразовать произвольные строки в имена, совместимые с CLS?
Я генерирую динамическое RDLC (определение отчета клиента) для элемента управления ASP.NET Report Viewer, а некоторые имена полей должны основываться на строках, введенных пользователем.
К сожалению, у меня мало контроля над вводом имен полей клиентом (через стороннюю CMS). Но я довольно гибкий в отношении замещений, необходимых для создания совместимой строки.
У меня есть алгоритм реактивной халтуры сейчас вдоль линий:
public static string FormatForDynamicRdlc(this string s)
{
//We need to change this string to be CLS compliant.
return s.Replace(Environment.NewLine, string.Empty)
.Replace("\t", string.Empty)
.Replace(",", string.Empty)
.Replace("-", "_")
.Replace(" ", "_");
}
Но я хотел бы что-то более всеобъемлющее. Есть идеи?
ПРИМЕЧАНИЕ: Если какая-либо помощи, алгоритм я использую для создания динамического RDLC основан на методе BuildRDLC найти здесь: http://csharpshooter.blogspot.com/2007/08/revised-dynamic-rdlc-generation.html
Nice one! Что не могут делать регулярные выражения :) –
Я думаю, что подчеркивание под знаком CLS недопустимо. См. Http://stackoverflow.com/a/1195061/1086134. Также будьте осторожны, если вы примените вышеприведенный алгоритм к коллекции строк, вы можете получить неидеальный набор имен. –
@Martin_ATS Вы правы. Как получить уникальный набор имен? Добавляя к имени строку GUID, сгенерированную во время выполнения с помощью Guid.NewGuid(). ToString() 'решает ее, но в некоторых случаях это имя слишком длинное, чтобы быть практичным. –