Есть ли способ получить поведение регулярного выражения ruby ​​1.9 в ruby ​​1.8 (с rails 2.3)? - PullRequest
0 голосов
/ 10 марта 2011

Я пытаюсь удалить несловесные символы из начала и конца строки.До сих пор у меня была функция:

$KCODE='UTF-8'

...

def clean_string str
  str && str.gsub(/\s+/msiu, ' ').gsub(/\A\W*|\W*\Z/msiu,'')
end

В большинстве случаев работает, но не работает на знаках фунта.

>> puts clean_string('£5.00')
£5.00

Я читал, что в ruby ​​1.8 этоповедение в соответствии со спецификацией;что все не-ascii символы считаются символами слова.Но это не то поведение, которое я хочу;Я хочу, чтобы только словесные символы считались словесными символами, так как они находятся в ruby ​​1.9.

Есть ли способ получить поведение rebyx в ruby ​​1.9 в ruby ​​1.8 (с rails 2.3.10)?

1 Ответ

2 голосов
/ 10 марта 2011

В конце концов я обнаружил, что вы можете сделать это, используя oniguruma gem :

require 'oniguruma'

def clean_string str
  squishy_regexp = Oniguruma::ORegexp.new('\s+',       'msi', 'utf8')
  clean_regexp   = Oniguruma::ORegexp.new('^\W*|\W*$', 'msi', 'utf8')

  if str
    str = squishy_regexp.gsub(str, ' ')
    str = clean_regexp.gsub(str, '')
  end

  str
end

>> puts clean_string('£5.00')
5.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...