Supposons que deux lignes de texte correspondent l'une à l'autre mot par mot, à l'exception des signes de ponctuation. Comment puis-je faire un alignement vertical d'entre eux?Comment faire l'alignement vertical de lignes de texte en Perl?
Par exemple:
$line1 = "I am English in fact"; $line2 = "Je suis anglais , en fait";
Je veux que la sortie soit comme ceci:
I am English in fact Je suis anglais , en fait .
Je suis venu avec le code suivant, en fonction de ce que j'ai appris des réponses à mes questions précédentes postées sur SO et la section "Sortie formatée avec printf" de Learning Perl.
use strict;
use warnings;
my $line1 = "I am English in fact";
my $line2 = "Je suis anglais , en fait.";
my @array1 = split " ", $line1;
my @array2= split " ", $line2;
printf "%-9s" x @array1, @array1;
print "\n";
printf "%-9s" x @array2, @array2;
print "\n";
Ce n'est pas satisfaisant. La sortie est la suivante:
I am English in fact Je suis anglais , en fait.
Quelqu'un peut-il me donner quelques conseils et suggestions pour résoudre ce problème?
Merci :)
Mise à jour
@ysth m'a envoyé sur la bonne voie! Merci encore :) Depuis que je sais ce que ma propre date ressemble, pour cet exemple, tout ce que je dois faire est d'ajouter la ligne de code suivante:
for (my $i = 0; $i < @Array1 && $i < @Array2; ++$i) {
if ($Array2[$i] =~ /,/) {
splice(@Array1, $i, 0, '');
}
}
Learning Perl mentionne brièvement cette fonction d'épissure peut être utilisé pour enlever ou ajoutez des éléments au milieu du tableau. Maintenant, merci, j'ai encore élargi mon stock de connaissances Perl :)
Dans ce travail, vous devez l'ajouter comme une balise. – voyager
@voyager, ne vous offusquez pas, mais qu'est-ce qui vous fait penser que c'est des devoirs? cela ressemble-t-il à des devoirs? Je ne suis pas sûr. Mais non, ce n'est certainement pas des devoirs. – Mike
Complètement hors-sujet, mais cette approche * à la traduction * est une mauvaise, mauvaise idée. Les langues se correspondent rarement si bien les unes aux autres. – Telemachus