当我分割字符串“Hello World/N”与分词红宝石计数
"hello world \n".scan(/\w+/)
我得到["hello", "world"]
我想指望\ n或\ T作为字符串为好。
当我分割字符串“Hello World/N”与分词红宝石计数
"hello world \n".scan(/\w+/)
我得到["hello", "world"]
我想指望\ n或\ T作为字符串为好。
你要这样呢?
"hello world \n".scan(/\w+|\n/)
这是我想要的。非常感谢 。 – 2011-04-06 07:32:38
在字符串\n
中有一个特殊的含义:它演变为将返回视为空白。 您应该避开反斜杠:\\n
。
如果要拆分空格你的字符串只是,你应该使用
"Hello world \n".split(/ /)
"hello world \n".scan /[\w\n\t]+/
您可以使用指定的字符类[:CNTRL:]。
irb(main):001:0> "hello world \n".scan(/\w+|[[:cntrl:]]/)
=> ["hello", "world", "\n"]
这是如果你不想分手后撇号的话更好(不是90年代,等等)
"hello world \n".split(/[^\w']+/)
做不使用\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一起工作,这已改变。如果字符串中包含Unicode字符,则该字词也将被分隔。
"Die Apfelbäume".scan /\w+/
=> ["Die", "Apfelb", "ume"]
这里有两个选项。
你想跳过数字干脆。精细,只是用
/\p{Letter}+/
你不想跳过数字,因为你要他们算的话,太。然后使用
/\S+/
表达\S+
将匹配的非空白字符/[^ \t\r\n\f]/
。唯一的缺点是,你的话会附加其他字符。像括号,连字符,点等。为了计算这个唯一目的应该不成问题。
如果你也想拥有这些单词。然后你需要应用额外的字符剥离。
请更正问题。你的一个说法是错误的,我也不明白你在问什么。 – Amadan 2011-04-06 07:24:44
你的前四条线与这个问题无关。 – sawa 2011-04-06 12:50:17