![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| n1k0LaY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 13.6.2008 Репутация: нет Всего: нет |
Возможно ли как то быстро проверить является ли некая строка 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; } просто необходимо много фильтровать )) будет достаточно громоздко, да и неудобно маленько. Это сообщение отредактировал(а) n1k0LaY - 18.6.2008, 10:18 |
|||
|
||||
| Walker |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 5 Всего: 16 |
Ваш код вполне быстрый.
Позвольте, однако, сделать несколько замечаний: 1. Использовать лучше следующее условие:
При всей Вашей любви к C внесите изменения, соответствующие специфике C#: 2. Тип значения, возвращаемого методом, лучше сделать bool и возвращать в зависимости от результата false или true, а назвать метод лучше как-нибудь вроде IsCyrillic(). 3. вместо цикла for использовать foreach.
-------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
||||
|
|||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
только проверкой символов
да и с ними не всё так просто например, является ли русскоязычным слово "n-мерное (пространство)"? Добавлено @ 10:51 при действительно большом кол-ве проверок for таки предпочтительнее, не будет создаваться и использоваться класс энумератора и ToCharArray() необязателен, sting и так реализует IEnumerable а так - да, "оставь С всяк сюда входящий" Это сообщение отредактировал(а) mihryak - 18.6.2008, 10:52 |
|||
|
||||
| Bishop |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 3.6.2005 Где: Минск, Беларусь Репутация: 6 Всего: 16 |
Раз уж на то пошло, то идеологически правильней (и в полном соответствии с поставленной задачей) будет так:
|
|||
|
||||
| n1k0LaY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 13.6.2008 Репутация: нет Всего: нет |
Не ожидал такой скорости =)) Всем спасибо кто откликнулся, буду мотать на ус))
Все таки сделаю... булевский тип и такую проверку)
Это сообщение отредактировал(а) n1k0LaY - 18.6.2008, 11:35 |
|||
|
||||
| Bishop |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 3.6.2005 Где: Минск, Беларусь Репутация: 6 Всего: 16 |
n1k0LaY, в таком случае не забудьте про букву «ё» («Ё»), которая не входит в общий диапазон.
А регулярные выражения советую изучить. |
|||
|
||||
| n1k0LaY |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 13.6.2008 Репутация: нет Всего: нет |
да блин меня эти слова убивают еще пока ))) недавно C# учу , притом сразу практикой) до этого кодил олимп задачки и всякую всячину на pascale , так что использую стандартные методы. А букву Ё учел) спасибо) |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Гадость редкостная эти ваши регулярные выражения |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 5 Всего: 36 |
Гадость редкостная эти ваши регулярные выражения
"ты просто не умеешь их готовить" © (: |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
|
|||
|
||||
| Zakonnic |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 25.4.2006 Репутация: 2 Всего: 6 |
Если нужна скорость, то можно сделать отдельный проект Utils с unsafe-методами. Только не забыть в свойствах проекта их разрешить. Ну и тогда переделать изначальное предложение автора (действительно, довольно быстрое), можно так:
Но ансейф есть ансейф... По идеологии дотнета логичнее все-же использовать регулярные выражения для таких задач. Но это несколько медленнее. Ищите компромисы --------------------
...и никогда не пишите в комментариях правду |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |