我有以下字符串。
melody = "F# G# A# B |A# G# F# |A# B C# D# |C# B A# |F# F#
|F# F# |F#F#G#G#A#A#BB|A# G# F# "
我想将F#
转换为f
,将G#
转换为g
等。
melody.gsub(/C#/, 'c').gsub(/D#/,'d').gsub(/F#/,'f').gsub(/G#/,'g').gsub(/A#/,'a')
以上给出了所需的输出。但我想知道我是否只能使用gsub
一次。
"f g a B |a g f |a B c d |c B a |f f |f f |ffggaaBB|a g f "
答案 0 :(得分:4)
String#gsub
接受一个可选块:块的返回值用作替换字符串:
melody.gsub(/[CDFGA]#/) { |x| x[0].downcase }
# => "f g a B |a g f |a B c d |c B a |f f |f f |ffggaaBB|a g f "
答案 1 :(得分:1)
您也可以使用哈希。
melody.gsub(/[CDFGA]#/, {'C#' => 'c', 'D#' => 'd', 'F#' => 'f', 'G#' => 'g', 'A#' => 'a'})