0
我试图得到一个功能设置< B>身边擦肩而过的字符串(不区分大小写),这样GSUB一个正则表达式:请使用具有口音
bold_string("Hello everyone","o")
> "Hell<b>o</b> every<b>o</b>ne"
bold_string("HEllo evEryonE", "e")
> "H<b>E</b>llo <b>e</b>v<b>E</b>ryon<b>E<b/>"
现在,我的功能看起来像这样:
def bold_string(str, search)
str.gsub(/(#{search})/i, '<b>\1</b>')
end
它与前面的例子完全一致,但与具有一些口音的单词无关。还有我所期望的结果:
bold_string("Petite bête", "e")
> "P<b>e</b>tit<b>e</b> b<b>ê</b>t<b>e</b>"
bold_string("Petite bête", "ê")
> "P<b>e</b>tit<b>e</b> b<b>ê</b>t<b>e</b>"
换句话说,我必须要找到一个正则表达式像/搜索/ I,它说:“你必须要找到一些单词‘搜索’或单词‘搜索’口音”。
编辑:
我看到我和我的例子过于simplist ...它应该用绳子工作,而不是简单字符:
bold_string("Petite bête", "êt")
> "P<b>et</b>ite</b> b<b>êt</b>e"
问候
皮埃尔
编辑2: 我使用了解决方案FJ的这个新功能
def regex_from_string_including_accents(str)
accents = ['aàâ', 'eéèêë', 'oöô' 'iî']
return str.gsub(/./) do |letter|
accent_group = accents.detect{|group| group.include?(letter)}
accent_group ? "[#{accent_group}]" : letter
end
end
谢谢你,很好的解决方案......但是dosn't不工作的话。我编辑我的第一条消息,告诉你我的意思。 – pierallard 2013-02-21 18:01:59
看我的编辑,它现在应该用文字。 – 2013-02-21 18:11:07
不错的工作。我在第一个问题上做了一些修改。谢谢 ! – pierallard 2013-02-22 08:09:10