繁体   English   中英

仅使用Ruby regex gsub一次

[英]Using Ruby regex gsub only once

我有以下字符串。

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   "

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   "

您也可以使用哈希。

melody.gsub(/[CDFGA]#/, {'C#' => 'c', 'D#' => 'd', 'F#' => 'f', 'G#' => 'g', 'A#' => 'a'})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM