2010-05-08 2 views
1
@string = "Sometimes some stupid people say some stupid words" 

@string.enclose_in_brackets("some") # => "Sometimes {some} stupid people say {some} stupid words" 

Как должен выглядеть метод enclose_in_brackets? Пожалуйста, имейте в виду, я хочу только вложить целые слова, (я не хочу «{Некоторые] раз {некоторые] глупые ....», слово «иногда» должно быть оставлено без измененийruby ​​прилагается выбранные целые слова в скобках

ответ

5

это просто строка подстановка с помощью регулярных выражений. Вы можете использовать слово граничного специальный символ, чтобы предотвратить его соответствия своего параметра, когда он находится в середине другого слова. И поставить метод внутри класс String, чтобы вы могли называть его непосредственно на строке, как в вашем примере.

class String 
    def enclose_in_brackets(selection) 
    self.gsub(/(\b#{selection}\b)/i, '{\1}') 
    end 
end 

'Sometimes some stupid people say some stupid words'.enclose_in_brackets('some') 
# Sometimes {some} stupid people say {some} stupid words. 
1

использование границы слова \ б с регулярным выражением /\bsome\b/

irb(main):015:0* x="Sometimes some good people say some good words" 
irb(main):029:0* x.gsub(/\b(some)\b/,"{\\1}") 
=> "Sometimes {some} good people say {some} good words" 
Смежные вопросы