我正在尝试拆分字符串并使用Ruby计算字数,但我想忽略特殊字符。
例如,在这个字符串中“你好,我的名字是雨果......”我用空格分开它,但最后一个......不应该算是因为它不是一个单词。
我正在使用string.inner_text.split(' ').length
。如何指定与空格分开的特殊字符(例如......?!等)不计算在内?
谢谢大家, 亲切的问候, 雨果
答案 0 :(得分:6)
"Hello, my name is não ...".scan /[^*!@%\^\s\.]+/
# => ["Hello,", "my", "name", "is", "não"]
/[^*!@%\^]+/
将匹配*!@%\^
以外的任何内容。您可以在此列表中添加更多不需要匹配的内容
答案 1 :(得分:1)
这是部分答案,部分回应@Neo的回答:为什么不使用适当的工具来完成工作?
http://www.ruby-doc.org/core-1.9.3/Regexp.html说:
POSIX括号表达式也类似于字符类。它们提供了上述的便携式替代方案,其附加好处是它们包含非ASCII字符。例如,/ \ d /仅匹配ASCII十进制数字(0-9);而/ [[:digit:]] /匹配Unicode Nd类别中的任何字符。
- / [[:alnum:]] / - 字母和数字字符
- / [[:alpha:]] / - 字母字符
- ...
Ruby还支持以下非POSIX字符类:
- / [[:word:]] / - 以下Unicode常规类别之一中的字符Letter,Mark,Number,Connector_Punctuation
你想要单词,请使用str.scan /[[:word:]]+/