當我分割字符串「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