如何使用Ruby删除字符串中某个字符后的子字符串?
答案 0 :(得分:40)
new_str = str.slice(0..(str.index('blah')))
答案 1 :(得分:24)
我发现"Part1?Part2".split('?')[0]
更容易阅读。
答案 2 :(得分:9)
我很惊讶没有人建议使用' gsub'
irb> "truncate".gsub(/a.*/, 'a')
=> "trunca"
gsub的爆炸版可以用来修改字符串。
答案 3 :(得分:5)
str = "Hello World"
stopchar = 'W'
str.sub /#{stopchar}.+/, stopchar
#=> "Hello W"
答案 4 :(得分:0)
一种特殊情况是,如果您多次出现相同的字符,并且想要从最后一次出现到结尾(而不是第一个)删除。
按照Jacob的建议,您只需要使用rindex
而不是index
,因为rindex
可以从字符串末尾开始获取字符串中字符的索引。
像这样:
str = '/path/to/some_file'
puts str.slice(0, str.index('/')) # => ""
puts str.slice(0, str.rindex('/')) # => "/path/to"