【发布时间】:2017-05-15 13:03:59
【问题描述】:
第一次在 Stackvoverflow 上,所以希望我正确且尽可能清晰地发布此内容。如果需要,请随时将其撕开,让我知道如何在未来发布更清晰的问题。
这里是 Ruby 的新手,并在我可以练习的地方进行练习。
我想知道如何在 ruby 中替换字符串中的实例。
例如:
说我有:
string = 'richard julie richard julie sam letty sam letty'
如何替换字符串中不等于 'richard' 或 'julie' 的任何实例并再次替换为单词 richard?
所以在实现上述 ruby 方法后新字符串会被读取:
string = 'richard julie richard julie richard richard richard richard
我尝试过像这样使用 gsub:
def string_replace(str)
if str.include?("sam" || "letty")
str.gsub! "sam" && "letty", "richard"
end
end
我已经意识到这个尝试有很多问题;
使用布尔运算符时,只有一个参数会被计算!任何人都可以解释为什么吗?这也意味着当我需要将“sam”和“letty”都替换为“richard”时,只替换一个词。
这种尝试也非常有限,因为它只会替换那些出现的字符串 sam & letty 的实例。有没有更好的方法可以覆盖任何不等于richard 或 julie 的词,以再次替换为richard 一词?
非常感谢您对此提供的任何帮助。
谢谢你,新年快乐。
P.s 如何使用反勾号转义,以便打印灰色块来整理它?谢谢
【问题讨论】:
-
对于 P. S. 问题,请检查我的编辑。
-
string.split.map { |w| w != "richard" && w != "julie" ? "richard" : w }.join(' ') -
@sagarpandya82 很好的答案-谢谢,但在下面将 ReggieB 标记为更简洁且更易于理解的解决方案。再次感谢。
标签: ruby string replace str-replace