Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Подсчёт определённых символов в строке


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

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

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

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

Автор: gcc 29.10.2010, 23:42
алгоритм примерно такой:

Код

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

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

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

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)