如何使用Ruby删除字符串中某个字符后的子字符串?

我想这是一个简单的问题

我该怎么做呢?

new_str = str.slice(0..(str.index('blah'))) 

替代文字

我发现"Part1?Part2".split('?')[0]更容易阅读。

我很惊讶没有人建议使用’gsub’

 irb> "truncate".gsub(/a.*/, 'a') => "trunca" 

bs版本的gsub可用于修改字符串。

 str = "Hello World" stopchar = 'W' str.sub /#{stopchar}.+/, stopchar #=> "Hello W" 

一种特殊情况是,如果您有多次出现相同的字符,并且您想要从最后一次出现到结尾(而不是第一次出现)。 按照Jacob的建议,你只需要使用rindex而不是index因为rindex获取字符串中字符的索引但是从结尾开始。 像这样的东西:

 str = '/path/to/some_file' puts str.slice(0, str.index('/')) # => "" puts str.slice(0, str.rindex('/')) # => "/path/to"