powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Collation в .NET - как получить все буквы из заданного диапазона?
3 сообщений из 3, страница 1 из 1
Collation в .NET - как получить все буквы из заданного диапазона?
    #38057251
iBorisBondarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробую реализовать аналог T-SQL Like на C# для проекта ASSP: http://asstoredprocedures.codeplex.com/discussions/404654#post947371

RegEx аналог уже был, и он работает, но по двум причинам, хочется собрать "чистый" алгоритм без RegEx (1 - подвисание скомпилированных шаблонов в памяти, 2 - потенциальная возможность ускорить выполнение).
За основу взял вот это: http://stackoverflow.com/questions/5417070/c-sharp-version-of-sql-like/8583383#8583383

Пока непонятно как обойти такую засаду:

Как корректно реализовать парсинг выражений вида "[А-Я]", т. к., например, в CP 1251 "Ё" идёт перед "А" (0x401 и 0x410).
Пока кроме как написания и поддержки собственных Collation'ов для каждого языка выхода не вижу.

Подскажите, люди добрые, может есть попроще варианты?
Может в недрах .NET есть массивы(или что там есть) с отсортированными в нужной последовательности символами для разных культур?
...
Рейтинг: 0 / 0
Collation в .NET - как получить все буквы из заданного диапазона?
    #38057277
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iBorisBondarev,

а почему бы шарпу не взять на себя проблемы с кодировкой?
задайте ему char символ , и пусть он сравнивает.
вот мне когда-то надо было что то в словах найти , написал что то своё ( по двум причинам, одн а из них - РегЭкс что то рушит мой моск )
я задавал шаблон в виде
ё-л
^-2
з-*-ая-н
ц-и-я
о-т-ьпрога генерила код , компилила его , ну и применяла соотвественно. для любых символов больше 0x20
думаю специализированный скомпилированный код будет шустрее работать , нежели шаблонированный
Код: c#
1.
2.
3.
4.
5.
       if (((c1 == 'ё' ) &&(c0 == 'л' )  )||
              ((c1 == '^' ) &&(c0 == '2' )  )||
              ((c3 == 'з' ) &&(c1 == 'а' ||c1 == 'я' ) &&(c0 == 'н' )  )||
              ((c2 == 'ц' ) &&(c1 == 'и' ) &&(c0 == 'я' )  )||
              ((c2 == 'о' ) &&(c1 == 'т' ) &&(c0 == 'ь' )  ) )



не, конечена, если строк таки миллион ,и известна кодировка , то можна вабще в байтах кодировки сравнивать. если очень хочется скорости. миллион строк распарит мигом
...
Рейтинг: 0 / 0
Collation в .NET - как получить все буквы из заданного диапазона?
    #38057392
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iBorisBondarev,

Эх... хорошо в VB.NET есть оператор LIKE Правда он не нативный, компилятор вызывает соответствующую функцию из CompilerServices в сборке Microsoft.VisualBasic.dll.
Через рефлектор можно посмотреть реализацию
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Collation в .NET - как получить все буквы из заданного диапазона?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]