我没有词的标题,以及我不能rly解释它,但如果我有让说,我有这样的东西
puts ("red, blue").gsub("red", "blue").gsub("blue", "red")
我想让“红,蓝”变成“蓝,红”,它们是彼此的对立面,但是因为“红”变成了“蓝”,然后“蓝”又变成了“红”,它只是不起作用。我尝试了另一种方法,我想让所有的例子中的“快乐”被替换为“悲伤”,反之亦然
qij5mzcb1#
您可以将替换作为散列提供。键要匹配模式(必须是字符串),值要替换:
>> "red, blue, blue, green".gsub(/red|blue/, {"red" => "blue", "blue" => "red"}) => "blue, red, red, green"
>> "happy happy sad".gsub(/sad|happy/, {"sad" => "happy", "happy" => "sad"}) => "sad sad happy"
对于更复杂的操作:
"happy happy sad red blue".gsub(/\w+/) do |m| case m when "happy" then "red" when "sad" then "blue" when "red" then "sad" when "blue" then "happy" end end => "red red blue sad happy"
wmvff8tz2#
你可以在一个块中使用Ruby的gsub()函数,例如。
gsub()
puts 'red, blue'.gsub(/\b(?:red|blue)\b/) { |word| word == "red" ? "blue" : "red" } => "blue, red"
这里的想法是全局搜索red或blue。然后将匹配传递给一个块(在其他编程语言中通常称为回调或lambda函数),该块将red交换为blue,反之亦然。
red
blue
sg24os4d3#
像这样使用临时占位符
str = "red, blue" placeholder = "###TEMP_PLACEHOLDER###" result = str.gsub("red", placeholder).gsub("blue", "red").gsub(placeholder, "blue") puts result
3条答案
按热度按时间qij5mzcb1#
您可以将替换作为散列提供。键要匹配模式(必须是字符串),值要替换:
对于更复杂的操作:
wmvff8tz2#
你可以在一个块中使用Ruby的
gsub()
函数,例如。这里的想法是全局搜索
red
或blue
。然后将匹配传递给一个块(在其他编程语言中通常称为回调或lambda函数),该块将red
交换为blue
,反之亦然。sg24os4d3#
像这样使用临时占位符