web-dev-qa-db-ja.com

Rubyを使用して文字列内の特定の文字の後の部分文字列を削除するにはどうすればよいですか?

Rubyを使用して文字列内の特定の文字の後の部分文字列を削除するにはどうすればよいですか?

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

alt text

40
Jacob Relkin

"Part1?Part2".split('?')[0]の方が読みやすいと思います。

25
Ivan

「gsub」の使用を提案された人がいないことに驚いています

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

文字列を変更するには、gsubのbangバージョンを使用できます。

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

特殊なケースは、同じ文字の複数の出現があり、最後の出現から最後まで(最初の出現ではなく)削除する場合です。 Jacobが示唆したとおり、rindexは文字列内の文字のインデックスを取得しますが、末尾から開始するため、indexではなくrindexを使用する必要があります。このようなもの:

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