我正在阅读 Ruby 文档,对 gsub和 tr之间的区别感到困惑。这两者有什么区别?
gsub
tr
tr返回 str的一个副本,其中 from_str中的字符被 to_str中的相应字符替换。如果 to_str比 from_str短,则用它的最后一个字符填充,以保持对应。 Http://apidock.com/ruby/string/tr
str
from_str
to_str
gsub返回 str的一个副本,其中模式的所有匹配项都替换为第二个参数。模式通常是 Regexp; 如果给定为 String,它包含的任何正则表达式元字符都将按字面意思解释,例如,\d将匹配后跟 d的间隙,而不是数字。 Http://apidock.com/ruby/string/gsub
\d
d
如果要替换(翻译)单个字符,请使用 tr。
tr匹配 单身字符(不通过正则表达式) ,因此字符不需要以相同的顺序出现在第一个字符串参数中。找到一个字符后,将其替换为在第二个字符串参数的同一索引处找到的字符:
'abcde'.tr('bda', '123') #=> "31c2e" 'abcde'.tr('bcd', '123') #=> "a123e"
当需要使用正则表达式或需要替换较长的子字符串时,请使用 gsub:
'abcde'.gsub(/bda/, '123') #=> "abcde" 'abcde'.gsub(/b.d/, '123') #=> "a123e"