Jac*_*kin 41
new_str = str.slice(0..(str.index('blah')))
Run Code Online (Sandbox Code Playgroud)

我很惊讶没有人建议使用'gsub'
irb> "truncate".gsub(/a.*/, 'a')
=> "trunca"
Run Code Online (Sandbox Code Playgroud)
bs版本的gsub可用于修改字符串.
str = "Hello World"
stopchar = 'W'
str.sub /#{stopchar}.+/, stopchar
#=> "Hello W"
Run Code Online (Sandbox Code Playgroud)
一种特殊情况是,如果同一字符多次出现,并且您想要从最后一次出现到末尾(而不是第一个)删除。按照 Jacob 的建议,您只需使用rindex而不是indexasrindex获取字符串中字符的索引,但从末尾开始。像这样的东西:
str = '/path/to/some_file'
puts str.slice(0, str.index('/')) # => ""
puts str.slice(0, str.rindex('/')) # => "/path/to"
Run Code Online (Sandbox Code Playgroud)