web-dev-qa-db-fra.com

Comment supprimer une sous-chaîne après un certain caractère dans une chaîne à l'aide de Ruby?

Comment supprimer une sous-chaîne après un certain caractère dans une chaîne à l'aide de Ruby?

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

alt text

40
Jacob Relkin

Je trouve que "Part1?Part2".split('?')[0] est plus facile à lire.

25
Ivan

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.

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

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"
0
Redithion