Лучший способ считать слова в строке в Ruby?

Начиная с Вас использующий стандартный HTML необходимо будет определить отдельный класс для, и руководство установило строки на классы.

25
задан Tom Lehman 12 September 2009 в 20:27
поделиться

2 ответа

string.split.size

Отредактировано, чтобы предотвратить приливную волну глупости в отношении нескольких пробелов

Из страницы документации Ruby String

split (pattern = $ ;, [limit]) → anArray

Делит строку на подстроки на основе разделителя, возвращая массив этих подстрок.

Если шаблон является строкой, то ее содержимое используется в качестве разделителя при разделении ул. Если шаблон представляет собой один пробел, строка разделяется на пробелы, с ведущими пробелами и непрерывными пробелами символы игнорируются.

Если шаблон является Regexp, str делится там, где совпадает шаблон. Каждый раз, когда шаблон соответствует строке нулевой длины, str разделяется на отдельные персонажи. Если шаблон содержит группы, соответствующий совпадения также будут возвращены в массиве.

Если шаблон не указан, значение $; используется. Если $; равно нулю (что есть значение по умолчанию), строка разделяется на пробелы, как если бы был указан "".

Если параметр limit опущен, завершающие пустые поля будут подавлен. Если предел - положительное число, не более того числа будут возвращены поля (если ограничение равно 1, возвращается вся строка как единственная запись в массиве). Если отрицательный, нет предела количество возвращаемых полей, а конечные нулевые поля не подавлено.

" now's  the time".split        #=> ["now's", "the", "time"]

Хотя это текущая версия ruby ​​на момент редактирования, я узнал о версии 1.7 (IIRC), где это тоже работало. Я только что тестировал на 1.8.3.

51
ответ дан 28 November 2019 в 18:13
поделиться

Если «слово» в этом случае можно описать как буквенно-цифровую последовательность, которая может включать в себя «-», то следующее решение может быть подходящим (при условии, что все, что не соответствует слову 'шаблон является разделителем):


>> 'one-way street'.split(/[^-a-zA-Z]/).size
=> 2
>> 'one-way street'.split(/[^-a-zA-Z]/).each { |m| puts m }
one-way
street
=> ["one-way", "street"]

Однако есть некоторые другие символы, которые могут быть включены в регулярное выражение - например,' для поддержки таких слов, как «это».

2
ответ дан 28 November 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: