Tabulations dans printf
Le
xavier
Bonjour,
Je sais depuis mes débuts en C (il y aeuh) formater de jolis
tableaux ASCII, avec toutes les options, même exotiques, qu'on retrouve
verbatim dans Perl.
Ce que je ne sais pas faire par contre, c'est formater avec le nombre de
tabulations ad-hoc, comme ceci :
cle_courte<TAB><TAB><TAB>valeur
cle_tres_longue<TAB><TAB>valeur
C'est pour remplir un ficchier qui sera exploité par un programme dont
je n'ai pas le source, mais dont on peut dire sans se tromper, qu'il
matche l'éqivalent Perl de [\t]+ mais pas de [\t ]+
Ca fait deux jours que je google sans succès, après avoir cherché en
vain dans CPAN.
Quelqu'un aurait-il une idée à m'indiquer ?
Merci,
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Je sais depuis mes débuts en C (il y aeuh) formater de jolis
tableaux ASCII, avec toutes les options, même exotiques, qu'on retrouve
verbatim dans Perl.
Ce que je ne sais pas faire par contre, c'est formater avec le nombre de
tabulations ad-hoc, comme ceci :
cle_courte<TAB><TAB><TAB>valeur
cle_tres_longue<TAB><TAB>valeur
C'est pour remplir un ficchier qui sera exploité par un programme dont
je n'ai pas le source, mais dont on peut dire sans se tromper, qu'il
matche l'éqivalent Perl de [\t]+ mais pas de [\t ]+
Ca fait deux jours que je google sans succès, après avoir cherché en
vain dans CPAN.
Quelqu'un aurait-il une idée à m'indiquer ?
Merci,
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)

Poser une question


Le 23/12/2011 15:35, Xavier a écrit :
Ouf ! Pas simple...
Je suppose que les valeurs peuvent elles-même contenir des espaces,
lesquelles ne doivent pas être transformées en tabulations ?
Si ce n'est pas le cas, il te suffit de formater d'abord avec des
espaces, puis de passer le résultat à un outil qui remplace les
séries d'espaces par les tabulations appropriées.
Si tu n'es pas dans ce cas simple, mais que tu sais qu'une valeur ne
peut pas contenir plus de n espaces de suite (par exemple n=1), alors
voici une idée qui pourrait fonctionner, même si elle est un peu
tordue. J'explique en supposant des tabulations de 4.
1) Tu formates avec des espaces, en t'assurant que chaque valeur
commence après un multiple de 4 caractères. Ça je suppose que tu
dois savoir faire (et au passage c'était requis pour ma première
solution aussi). Il faut aussi qu'il y ait toujours plus de n
espaces, et je suppose que n
2) Tu remplaces partout " {1,3}(?= {4}+[^ ])" par
3) Tu remplaces partout " {4}" par
Note que 2 et 3 peuvent être réunis en une seule étape :
2&3) Tu remplaces partout "( {1,3}(?= {4}+[^ ])| {4})" par
Cordialement,
--
Olivier Miakinen
Text::Tabs
Ben oui, sinon c'est pas drôle, et c'est sans doute pour ça que le soft
dont j'ai hérité se comporte de cette façon...
Ah... Je vais tester ça.
Merci
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
Grmblbl. J'ai cherché partout, et je ne suis pas tombé sur celui-là.
J'essaye ça, merci
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)
C'est impeccable. Juste que le module ne sait pas quoi faire des dernier
espaces, et les laisse.
Mais c'est pas grave, un s/t[ ]+/t/g; met tout d'équerre.
Thx
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
(Jethro Tull)