Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчёт определённых символов в строке, count() и как его есть 
:(
    Опции темы
Oreolek
Дата 29.10.2010, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.10.2010

Репутация: нет
Всего: нет



Как в Ruby подсчитать количество определённых символов в слове?
Я пробовал count:
Код

word = "как"
vowels = word.count("аеиоуыэюяё")
if ($DEBUG) then puts("Слово: #{word}\nГласных в слове: #{vowels}\n") end

Результат:
Слово: как
Гласных в слове: 4

Маны насчёт count очень разнятся: одни говорят, что эта функция подсчитывает количество указанных символов в строке, другие - что она подсчитывает разность между указанными символами.

Это сообщение отредактировал(а) Oreolek - 29.10.2010, 07:28
PM MAIL Jabber   Вверх
gcc
Дата 29.10.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



алгоритм примерно такой:

Код

$pic_tc = "tt hh tt";
$cc++ while $pic_tc =~ /tt/smg;
print $cc;


Это сообщение отредактировал(а) gcc - 29.10.2010, 23:48
PM WWW ICQ Skype GTalk Jabber   Вверх
source777
Дата 30.10.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



Цитата(Oreolek @  29.10.2010,  07:28 Найти цитируемый пост)
Маны насчёт count очень разнятся: одни говорят, что эта функция подсчитывает количество указанных символов в строке, другие - что она подсчитывает разность между указанными символами.

Официальный ман по Ruby существует только один: http://ruby-doc.org/, как он может разниться сам с собой непонятно. 

Основная проблема с дефолтным String#count в том, что он ищет пересечение множеств по-байтно, а не по-символьно. Надеюсь понятно, чем это грозит русским строкам. Если уверен, что срока состоит только из русских букв, без пробелов, знаков пунктуации и прочего, то можно в качестве обходного пути сделать так: 
Код

vowels = word.count("аеиоуыэюяё") - word.length/2


Это сообщение отредактировал(а) source777 - 30.10.2010, 00:05


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0866 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.