Разделение юникода (я думаю) с использованием .split в ruby - PullRequest
3 голосов
/ 22 февраля 2010

В настоящее время я очищаю RSS-канал от last.fm, и атрибут title выглядит так, как будто у него есть Unicode "-", который отображается как \ u2013 на firebug. Вот корма для любопытных:

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

Когда я пишу что-то вроде этого

feedentry.title.split('-')

он не найдет черту Unicode. Я также попробовал это:

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

и некоторые варианты, такие как использование [] диапазонов. Неудачно. Я взглянул на остальные ответы, и ни один из них, похоже, не работает для меня, так что это моя последняя надежда.

Спасибо за ваше время!

1 Ответ

0 голосов
/ 22 февраля 2010

Синтаксис \u2013 работает только с Ruby 1.9, который полностью поддерживает Unicode. Я предполагаю, что вы используете Ruby 1.8.

В Ruby 1.8 вы все еще можете использовать черту Unicode в качестве аргумента split. Они оба работают:

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

В регулярных выражениях не забудьте установить модификатор u для совместимости с юникодом (вне Rails):

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

В качестве альтернативы, установите $KCODE = "U", что подразумевает модификатор u для всех регулярных выражений. Rails уже делает это за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...