我有一串文字:
string = "%hello %world ho%w is i%t goin%g"
我想返回以下内容:
"Hello World hoW is iT goinG
%
符号是一个键,告诉我下一个字符应该大写。我到目前为止最接近的是:
@thing = "%this is a %test this is %only a %test"
if @thing.include?('%')
indicator_position = @thing.index("%")
lowercase_letter_position = indicator_position + 1
lowercase_letter = @thing[lowercase_letter_position]
@thing.gsub!("%#{lowercase_letter}","#{lowercase_letter.upcase}")
end
返回:
"This is a Test this is %only a Test"
看起来我需要遍历字符串以使其工作,因为它只是替换小写字母' t'但是我无法让它发挥作用。
答案 0 :(得分:7)
您可以使用gsub
和阻止来执行此操作:
string.gsub(/%(.)/) do |m|
m[1].upcase
end
使用块可以在每次匹配时运行任意代码。
答案 1 :(得分:1)
不如@tadman,但你可以写:
string.gsub(/%./, &:upcase).delete('%')
#=> "Hello World hoW is iT goinG