Делать не использовать \w+
для подсчета слов.Он будет разделять числа и слова с помощью Unicode следующим образом:
"The floating point number is 13.5812".scan /\w+/
=> ["The", "floating", "point", "number", "is", "13", "5812"]
То же самое верно для чисел с другими разделителями, такими как "12,000"
.
В Ruby 1.8 выражение w+
работает с Unicode, это изменилось.Если в вашей строке есть символы Юникода, слово тоже будет разделено.
"Die Apfelbäume".scan /\w+/
=> ["Die", "Apfelb", "ume"]
Здесь есть два варианта.
Вы хотите пропустить номера в целом.Хорошо, просто используйте
/\p{Letter}+/
Вы не хотите пропускать числа, потому что вы тоже хотите считать их словами.Затем используйте
/\S+/
Выражение \S+
будет совпадать на непробельных символах /[^ \t\r\n\f]/
.Единственным недостатком является то, что к вашим словам будут прикреплены другие символы.Как скобки, дефисы, точки и т. Д. С единственной целью подсчета это не должно быть проблемой.
Если вы тоже хотите иметь слова.Тогда вам нужно будет применить дополнительное удаление символов.