使用Ruby拆分字符串忽略某些字符

时间:2013-08-19 14:09:34

标签: ruby-on-rails ruby

我正在尝试拆分字符串并使用Ruby计算字数,但我想忽略特殊字符。

例如,在这个字符串中“你好,我的名字是雨果......”我用空格分开它,但最后一个......不应该算是因为它不是一个单词。

我正在使用string.inner_text.split(' ').length。如何指定与空格分开的特殊字符(例如......?!等)不计算​​在内?

谢谢大家, 亲切的问候, 雨果

2 个答案:

答案 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:]]+/