Comment supprimer une sous-chaîne après un certain caractère dans une chaîne à l'aide de Ruby?
new_str = str.slice(0..(str.index('blah')))
Je trouve que "Part1?Part2".split('?')[0]
est plus facile à lire.
Je suis surpris que personne n'ait suggéré d'utiliser 'gsub'
irb> "truncate".gsub(/a.*/, 'a')
=> "trunca"
La version bang de gsub peut être utilisée pour modifier la chaîne.
str = "Hello World"
stopchar = 'W'
str.sub /#{stopchar}.+/, stopchar
#=> "Hello W"
Un cas spécial est si vous avez plusieurs occurrences du même caractère et que vous souhaitez supprimer de la dernière occurrence à la fin (pas la première). Suivant ce que Jacob a suggéré, il suffit d'utiliser rindex
au lieu de index
car rindex
obtient l'index du caractère dans la chaîne mais en commençant par la fin. Quelque chose comme ça:
str = '/path/to/some_file'
puts str.slice(0, str.index('/')) # => ""
puts str.slice(0, str.rindex('/')) # => "/path/to"