在ruby中同时替换多个字符

时间:2014-04-23 00:39:10

标签: ruby

有没有更好的方法来编写下面的相同代码? 我正在寻找一个简洁的代码。

val.gsub!('A', 'Q')
val.gsub!('B', 'W')
val.gsub!('C', 'E')
val.gsub!('D', 'R')
val.gsub!('E', 'T')
val.gsub!('F', 'Y')

1 个答案:

答案 0 :(得分:6)

使用tr,专为您所描述的问题而设计:

> val = "ASDFGHJKL"
=> "ASDFGHJKL"
> val.tr("ABCDEF", "QWERTY")
=> "QSRYGHJKL"

不使用任何其他方法而不是您已经知道的方法,您可以构建键/值映射,然后迭代对:

{ 'A' => 'Q', 'B' => 'W', 'C' => 'E' ...}.each { |x,y| val.gsub(x, y) }