Rubyを使用して文字列内の特定の文字の後の部分文字列を削除するにはどうすればよいですか?
new_str = str.slice(0..(str.index('blah')))
"Part1?Part2".split('?')[0]
の方が読みやすいと思います。
「gsub」の使用を提案された人がいないことに驚いています
irb> "truncate".gsub(/a.*/, 'a')
=> "trunca"
文字列を変更するには、gsubのbangバージョンを使用できます。
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"