2013-04-24 101 views
0

我說我如何使用unicode字符掃描ruby字符串?

"#gefährlicher #blödsinn".scan(/#(\w+)/).flatten 

IRB與迴應:

"#gef��hrlicher #bl��dsinn".scan(/#(\w+)/).flatten 

,我得到

=> ["gef", "bl"] 

這顯然不是我想要的。

我在這裏做錯了什麼?

+0

如果您收到「問號」字,您的終端未配置爲正確顯示字符。賠率是好的,他們是UTF-8,但是,ISO-8859-1或其變種是可能的,或WIN-1252。調整你的LOCALE設置或終端,那些可能會消失。 – 2013-04-25 03:09:16

回答

4

按照this answerRegex doducmentation,\w只適用於[a-zA-Z0-9_]。你想要\p{Word}

"#gefährlicher #blödsinn".scan(/#(\p{Word}+)/).flatten 
# => ["gefährlicher", "blödsinn"] 

這麼說,我不知道你用的=>部分顯然IRB響應「與... IRB響應」是什麼意思?

+0

看起來,我輸入的內容和irb如何解釋它之間有區別。我用變音符輸入文本,一旦我按下輸入,就會將它們打印出來呢?字符。這很奇怪,因爲它似乎沒有發生在你身上。 – Jan 2013-04-24 23:42:35

+0

所以這給了我相同的結果:[「gef」,「bl」]。 – Jan 2013-04-24 23:43:59

+0

也許這是一些readline打嗝,與紅寶石和正則表達式都沒有任何關係...... – Jan 2013-04-24 23:54:34