| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > фильтр string |
| Автор: n1k0LaY 18.6.2008, 10:17 |
| Возможно ли как то быстро проверить является ли некая строка string temp, русскоязычным словом, не прибегая по символьной проверкой на принадлежание к интервалу кодов русского алфавита? пример такого кода(ниже) private int proverka(string temp) { int k; for (i = 0; i < temp.Length; i++) { k=temp[i]; if (k < 1039 || k > 1104) return -1; } return 0; } просто необходимо много фильтровать )) будет достаточно громоздко, да и неудобно маленько. |
| Автор: Walker 18.6.2008, 10:41 | ||||
| Ваш код вполне быстрый. Позвольте, однако, сделать несколько замечаний: 1. Использовать лучше следующее условие:
При всей Вашей любви к C внесите изменения, соответствующие специфике C#: 2. Тип значения, возвращаемого методом, лучше сделать bool и возвращать в зависимости от результата false или true, а назвать метод лучше как-нибудь вроде IsCyrillic(). 3. вместо цикла for использовать foreach.
|
| Автор: mihryak 18.6.2008, 10:42 |
| только проверкой символов да и с ними не всё так просто например, является ли русскоязычным слово "n-мерное (пространство)"? Добавлено @ 10:51 при действительно большом кол-ве проверок for таки предпочтительнее, не будет создаваться и использоваться класс энумератора и ToCharArray() необязателен, sting и так реализует IEnumerable а так - да, "оставь С всяк сюда входящий" |
| Автор: Bishop 18.6.2008, 11:12 | ||
Раз уж на то пошло, то идеологически правильней (и в полном соответствии с поставленной задачей) будет так:
|
| Автор: n1k0LaY 18.6.2008, 11:34 | ||
| Не ожидал такой скорости =)) Всем спасибо кто откликнулся, буду мотать на ус)) Все таки сделаю... булевский тип и такую проверку)
|
| Автор: Bishop 18.6.2008, 11:48 |
| n1k0LaY, в таком случае не забудьте про букву «ё» («Ё»), которая не входит в общий диапазон. А регулярные выражения советую изучить. |
| Автор: n1k0LaY 18.6.2008, 20:27 | ||
да блин меня эти слова убивают еще пока ))) недавно C# учу , притом сразу практикой) до этого кодил олимп задачки и всякую всячину на pascale , так что использую стандартные методы. А букву Ё учел) спасибо) |
| Автор: Idsa 18.6.2008, 21:00 |
Гадость редкостная эти ваши регулярные выражения |
| Автор: Rififi 18.6.2008, 23:49 |
| Гадость редкостная эти ваши регулярные выражения "ты просто не умеешь их готовить" © (: |
| Автор: Idsa 18.6.2008, 23:59 |
| Автор: Zakonnic 19.6.2008, 12:33 | ||
Если нужна скорость, то можно сделать отдельный проект Utils с unsafe-методами. Только не забыть в свойствах проекта их разрешить. Ну и тогда переделать изначальное предложение автора (действительно, довольно быстрое), можно так:
Но ансейф есть ансейф... По идеологии дотнета логичнее все-же использовать регулярные выражения для таких задач. Но это несколько медленнее. Ищите компромисы |