删除字符串的最后n个字符(如果它们与某些字符匹配)

时间:2017-10-22 07:59:26

标签: ruby

删除任何尾随'最优雅的方法是什么?'或者'!'从一个字符串?该字符串可以包含尾随'?'的任意组合。或者'!'或根本没有。我有以下(有效),但对我来说似乎很难看。有更多的Ruby方式吗?

t = 'what are you doing?!'
last_char = t[-1]
while last_char == '!' or last_char == '?'
  t.chop!
  last_char = t[-1]
end

2 个答案:

答案 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

相关问题