只使用Ruby regex gsub一次
我有下面的字符串只使用Ruby regex gsub一次,ruby,regex,string,Ruby,Regex,String,我有下面的字符串 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') 以上给出了所需的输出。但是我想知道我是否只
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 "
接受可选块:块的返回值用作替换字符串:
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]#/) { |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'})
你也可以使用散列
melody.gsub(/[CDFGA]#/, {'C#' => 'c', 'D#' => 'd', 'F#' => 'f', 'G#' => 'g', 'A#' => 'a'})
进行小写转换..同时替换.简短且甜蜜+1:)您可以使用反向引用在没有块的情况下执行此操作吗?@CarySwoveland,不,我不能。@CarySwoveland这里是,为什么不可能…在替换时执行小写转换..。简短而甜美+1:)你能使用反向引用在没有块的情况下执行此操作吗?@CarySwoveland,不,我不能。@CarySwoveland这里是,为什么不可能…我不认为这是这种情况下最有效的解决方案,但它有助于你演示如何执行更一般的替换。是的,它不短,但是,如果你的替换与匹配无关,则更一般。我不认为这是这种情况下最有效的解决方案,但如果你演示了如何进行更一般的替换,则会很有用。是的,它不短,但如果你的替换与匹配无关,则更一般。