Re: [SHELL] remplacer un caractère dans une sous-chaine
zelos 414, jeudi 20 décembre 2007, 16:14:31 CET
>[…]
> Malheureusement, il se peut que
> certains [] soient emboîtés aussi dans de rares cas.
Alors ça donne ça :
#! /usr/bin/ruby
while ligne = STDIN.gets
crochet = 0
date = false
until ligne.nil?
case ligne
when /\A[dD]ate\[/
date = true
print $&
when /\A\[/
crochet += 1
print $&
when /\A\]/
if date and crochet.zero?
date = false
else
crochet -= 1
if crochet < 0
# oups, trop de fermants
crochet = 0
end
end
print $&
when /\A /
if crochet > 0 and not date
print '_'
else
print ' '
end
when /\A./
print $&
end
ligne = $'
end
print "\n"
end
--
Sylvain Sauvage
Reply to: