在ruby中使用.split拆分unicode(我认为)

时间:2010-02-22 00:29:56

标签: ruby-on-rails ruby regex unicode

我正在从last.fm抓取一个rss feed,并且title属性看起来像是一个unicode“ - ”,它在firebug上显示为\ u2013。以下是那些好奇的人的饲料:

http://ws.audioscrobbler.com/2.0/user/rj/recenttracks.rss

当我写这样的东西时

feedentry.title.split('-')

它找不到unicode dash。我也试过这个:

@feedsplit = feedentry.title.gsub(/\u2013/,'-').split("-") 

以及使用[]范围等一些变体。没运气。我看了看其他答案,其中没有一个似乎对我有用,所以这是我最后的希望。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

\u2013语法仅适用于Ruby 1.9,它完全支持Unicode。我猜你正在运行Ruby 1.8。

在Ruby 1.8中,您仍然可以使用unicode dash作为split的参数。这些都有效:

feedentry.title.split("–")             # The actual UTF-8 char
feedentry.title.split("\342\200\223")  # The sequence of bytes

在正则表达式中,请记住设置u修饰符以实现unicode兼容性(在Rails之外):

@feedsplit = feedentry.title.gsub(/–/u,'-').split("-") 

或者,设置$KCODE = "U",这意味着所有正则表达式的u修饰符。 Rails已经为你做了这件事。