在ruby中使用.split拆分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("-") 

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

谢谢你的时间!

\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 

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

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

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