Ruby 当与散列一起使用时,`gsub`的第一个参数应该放什么?

Ruby 当与散列一起使用时,`gsub`的第一个参数应该放什么?,ruby,hash,gsub,Ruby,Hash,Gsub,您可以在gsub的第二个参数中使用哈希。在第一个论点中,我看到的所有例子通常都有一些我不理解的地方,例如: 如果有人能解释这一点,我将不胜感激。有人能帮忙吗?第一个参数总是一个正则表达式。上的Ruby文档对Ruby中的正则表达式有很好的解释。或者一般搜索“正则表达式”或“正则表达式” 在链接文章中,第一个是“字符类”([leto]将匹配任何单个字符l、e、t、或o),第二个是“组”或“捕获组”,与“0或1次”量词组合((ister)将匹配字符串“ister”作为一个组,?表示整个组可能出现0或1

您可以在
gsub
的第二个参数中使用哈希。在第一个论点中,我看到的所有例子通常都有一些我不理解的地方,例如:


如果有人能解释这一点,我将不胜感激。有人能帮忙吗?

第一个参数总是一个正则表达式。上的Ruby文档对Ruby中的正则表达式有很好的解释。或者一般搜索“正则表达式”或“正则表达式”


在链接文章中,第一个是“字符类”(
[leto]
将匹配任何单个字符
l
e
t
、或
o
),第二个是“组”或“捕获组”,与“0或1次”量词组合(
(ister)
将匹配字符串“ister”作为一个组,
表示整个组可能出现0或1次,因此正则表达式
M(ister)?r
将匹配“Mister”或“Mr”)

正如您在示例和文档中看到的,您将正则表达式作为第一个参数。有什么不清楚的?谢谢你的帮助。我想我需要从第一步开始,研究正则表达式。老实说,我甚至不知道那是什么。我不知道该怎么做,你能告诉我正确的方向吗?是的,“正则表达式”基本上是一个匹配字符串的模式或模板。两边的斜杠表示ruby和许多其他语言中的正则表达式对象。你可以在网上找到很多关于正则表达式的教程。gsub更典型的做法是使用字符串作为第二个参数——任何与正则表达式匹配的内容都将被字符串替换。或者第二个arg,它是一个具有自定义逻辑的块,用于根据匹配的内容进行替换。我忘了散列甚至可以是第二个参数!以防万一,如果字符串
s
(例如,
s=>'Mr.
)上有匹配项,
gsub
s
替换为
h[s]
,其中
h
是作为第二个参数的哈希值。第一个参数可以是,通常是字符串。非捕获组(
/M(?:iste)?r/
)也可以工作,而且确实是首选,因为不使用组的值。
def doctorize(string)
  string.gsub(/M(iste)?r/, 'Mister' => 'Doctor', 'Mr' => 'Dr')
end

doctorize('Mister Freeze') # => 'Doctor Freeze'
doctorize('Mr Smith')   # => 'Dr Smith'