删除任何尾随'最优雅的方法是什么?'或者'!'从一个字符串?该字符串可以包含尾随'?'的任意组合。或者'!'或根本没有。我有以下(有效),但对我来说似乎很难看。有更多的Ruby方式吗?
t = 'what are you doing?!'
last_char = t[-1]
while last_char == '!' or last_char == '?'
t.chop!
last_char = t[-1]
end
答案 0 :(得分:5)
'what are you doing?!'.sub(/[?!]+\z/, '')
#⇒ "what are you doing"
正则表达式中的 \z
是字符串结尾的标记。
答案 1 :(得分:0)
str = 'what are ?! you doing?!'
i = str.rindex(/[^?!]/)
#=> 20
i ? str[0..i] : ''
# => "what are ?! you doing"
str = '?!?!'
i = str.rindex(/[^?!]/)
#=> nil
i ? str[0..i] : ''
# => ""
请参阅String#rindex。