Ruby on rails 基于1个或多个匹配项的字符串中的粗体项

Ruby on rails 基于1个或多个匹配项的字符串中的粗体项,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有以下资料: str = "Hello world. Today is Wednesday" matchedTerms matchedTerms包含如下数据: > "world" > "word, is" 我想做的是更新str,如下所示: "Hello <b>world</b>. Today <b>is</b> Wednesday" “你好,世界,今天是星期三” 在Ruby/Rails中,更新给定匹配项的字符串的正确方法是什么

我有以下资料:

str = "Hello world. Today is Wednesday"
matchedTerms
matchedTerms包含如下数据:

> "world"
> "word, is"
我想做的是更新str,如下所示:

"Hello <b>world</b>. Today <b>is</b> Wednesday"
“你好,世界,今天是星期三”

在Ruby/Rails中,更新给定匹配项的字符串的正确方法是什么?

我不知道这是否适用于您想要的每个模式。但这将返回您在上面想要的内容

str = "Hello world. Today is Wednesday"
puts str
matchedTerms = ["world", "word, is"]
matchedTerms.each do |term|
  split = term.split
  split.each do |word|
    # case insensitive : str.gsub!(/#{word}/i, "<b>#{word}</b>")
    str.gsub!(word, "<b>#{word}</b>")
  end
end

puts str

>> Hello world. Today is Wednesday
>> Hello <b>world</b>. Today <b>is</b> Wednesday
str=“你好,世界,今天是星期三”
放置str
matchedTerms=[“世界”,“单词,是”]
匹配项。每个do |项|
split=term.split
分开。每个单词|
#不区分大小写:str.gsub!(/{word}/i,“{word}”)
str.gsub!(单词“#{word}”)
结束
结束
放置str
>>你好,世界。今天是星期三
>>你好,世界。今天是星期三

我不知道这是否适用于您想要的每种图案。但这将返回您在上面想要的内容

str = "Hello world. Today is Wednesday"
puts str
matchedTerms = ["world", "word, is"]
matchedTerms.each do |term|
  split = term.split
  split.each do |word|
    # case insensitive : str.gsub!(/#{word}/i, "<b>#{word}</b>")
    str.gsub!(word, "<b>#{word}</b>")
  end
end

puts str

>> Hello world. Today is Wednesday
>> Hello <b>world</b>. Today <b>is</b> Wednesday
str=“你好,世界,今天是星期三”
放置str
matchedTerms=[“世界”,“单词,是”]
匹配项。每个do |项|
split=term.split
分开。每个单词|
#不区分大小写:str.gsub!(/{word}/i,“{word}”)
str.gsub!(单词“#{word}”)
结束
结束
放置str
>>你好,世界。今天是星期三
>>你好,世界。今天是星期三

我不知道这是否适用于您想要的每种图案。但这将返回您在上面想要的内容

str = "Hello world. Today is Wednesday"
puts str
matchedTerms = ["world", "word, is"]
matchedTerms.each do |term|
  split = term.split
  split.each do |word|
    # case insensitive : str.gsub!(/#{word}/i, "<b>#{word}</b>")
    str.gsub!(word, "<b>#{word}</b>")
  end
end

puts str

>> Hello world. Today is Wednesday
>> Hello <b>world</b>. Today <b>is</b> Wednesday
str=“你好,世界,今天是星期三”
放置str
matchedTerms=[“世界”,“单词,是”]
匹配项。每个do |项|
split=term.split
分开。每个单词|
#不区分大小写:str.gsub!(/{word}/i,“{word}”)
str.gsub!(单词“#{word}”)
结束
结束
放置str
>>你好,世界。今天是星期三
>>你好,世界。今天是星期三

我不知道这是否适用于您想要的每种图案。但这将返回您在上面想要的内容

str = "Hello world. Today is Wednesday"
puts str
matchedTerms = ["world", "word, is"]
matchedTerms.each do |term|
  split = term.split
  split.each do |word|
    # case insensitive : str.gsub!(/#{word}/i, "<b>#{word}</b>")
    str.gsub!(word, "<b>#{word}</b>")
  end
end

puts str

>> Hello world. Today is Wednesday
>> Hello <b>world</b>. Today <b>is</b> Wednesday
str=“你好,世界,今天是星期三”
放置str
matchedTerms=[“世界”,“单词,是”]
匹配项。每个do |项|
split=term.split
分开。每个单词|
#不区分大小写:str.gsub!(/{word}/i,“{word}”)
str.gsub!(单词“#{word}”)
结束
结束
放置str
>>你好,世界。今天是星期三
>>你好,世界。今天是星期三
该方法需要一个块,这可以使它变得非常简单(并且应该比编写迭代器/循环更有效)

以下是我的做法:

matched_terms = ["world", "is"]
pattern = Regexp.new(matched_terms.join("|"), Regexp::IGNORECASE)

str = "Hello world. Today is Wednesday"
result = str.gsub(pattern) { |match| "<b>#{match}</b>" }
# => "Hello <b>world</b>. Today <b>is</b> Wednesday"
该方法需要一个块,这可以使它变得非常简单(并且应该比编写迭代器/循环更有效)

以下是我的做法:

matched_terms = ["world", "is"]
pattern = Regexp.new(matched_terms.join("|"), Regexp::IGNORECASE)

str = "Hello world. Today is Wednesday"
result = str.gsub(pattern) { |match| "<b>#{match}</b>" }
# => "Hello <b>world</b>. Today <b>is</b> Wednesday"
该方法需要一个块,这可以使它变得非常简单(并且应该比编写迭代器/循环更有效)

以下是我的做法:

matched_terms = ["world", "is"]
pattern = Regexp.new(matched_terms.join("|"), Regexp::IGNORECASE)

str = "Hello world. Today is Wednesday"
result = str.gsub(pattern) { |match| "<b>#{match}</b>" }
# => "Hello <b>world</b>. Today <b>is</b> Wednesday"
该方法需要一个块,这可以使它变得非常简单(并且应该比编写迭代器/循环更有效)

以下是我的做法:

matched_terms = ["world", "is"]
pattern = Regexp.new(matched_terms.join("|"), Regexp::IGNORECASE)

str = "Hello world. Today is Wednesday"
result = str.gsub(pattern) { |match| "<b>#{match}</b>" }
# => "Hello <b>world</b>. Today <b>is</b> Wednesday"


我一直在尝试匹配项。每个do | term | str.gsub(/term/,“#{term}”)结束我一直在尝试匹配项。每个do | term | str.gsub(/term/,“#{term}”)结束我一直在尝试匹配项。每个do | term | term | str gsub(/term/,“#{term}”)end谢谢,这个不区分大小写吗?也许正则表达式是正确的选择?
str.gsub!(/#{word}/i,“#{word}”)
这将以不区分大小写的方式工作。谢谢,这个不区分大小写吗?也许正则表达式是正确的选择?
str.gsub!(/#{word word}/i,“{word}”)
这将以不区分大小写的方式工作。谢谢,这是不区分大小写的吗?也许正则表达式是正确的选择?
str.gsub!(/{word}/i,“{word}”)
这将以不区分大小写的方式工作。谢谢,这是不区分大小写的吗?也许正则表达式是正确的选择?
str.gsub!(/{word word i,“{word}”)
这将以不区分大小写的方式工作。谢谢,有没有办法使此大小写不敏感?是的,确实如此。我已经更新了答案,使正则表达式不区分大小写。我刚刚将
Regexp::IGNORECASE
选项添加到
Regexp.new
调用中。(同时,我修正了我的输入错误:过去常说
Regex.new
,但应该是
Regexp.new
)如果匹配的术语是@cnn,例如它似乎不起作用。有什么想法吗?你能显示不起作用的代码和结果吗?因为它对我起作用。
r=Regexp.new('asdf|@cnn',Regexp::IGNORECASE)
“ASDF ASDF@cnn”.gsub(r){“hi”}#=>“hi hi hi"。您需要记住,匹配的术语需要遵守正则表达式规则,或者转换为遵守正则表达式规则。也就是说,
模式
是一个由字符串构造的正则表达式。因此字符串仍然必须是一个有效的正则表达式。谢谢,有没有办法使此大小写不重要?是的,确实如此。我已经更新了回答使正则表达式不区分大小写。我刚刚将
Regexp::IGNORECASE
选项添加到
Regexp.new
调用中。(此外,我还修复了我的输入错误:用于说
Regex.new
,但应该是
Regexp.new
)例如,如果匹配的术语是@cnn,它似乎不起作用。你知道吗?你能显示不起作用的代码和结果吗?因为它对我起作用。
r=Regexp.new('asdf |@cnn',Regexp::IGNORECASE)
然后
“asdf@cnn”。gsub(r){“hi”}=>“hi hi hi hi hi hi
。您需要记住,匹配的术语需要遵守正则表达式规则,或者转换为遵守正则表达式规则。也就是说,
模式
是一个由字符串构造的正则表达式。因此字符串仍然必须是一个有效的正则表达式。谢谢,有没有办法使此大小写不重要?是的,确实如此。我已经更新了回答使正则表达式不区分大小写。我刚刚将
Regexp::IGNORECASE
选项添加到
Regexp.new
调用中。(此外,我还修复了我的输入错误:用于说
Regex.new
,但应该是
Regexp.new
)例如,如果匹配的术语是@cnn,它似乎不起作用。你知道吗?你能显示不起作用的代码和结果吗