[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: