54 votes

Vous cherchez un moyen simple d'aligner du texte

J'ai un problème commun auquel je cherche une solution. J'ai des lignes de texte similaires et j'aimerais pouvoir insérer automatiquement du texte pour les aligner verticalement. de telle sorte que :

x="foo" data="123" y=x
x="b  4" data="12 " y=x
x="baaar4" data="123aaa5" y=x
x="baaaa,4" data="123dddd5" y=x

devient ceci

x="foo"     data="123"      y=x
x="b  4"    data="123 "     y=x
x="baaar4"  data="123aaa5"  y=x
x="baaaa,4" data="123dddd5" y=x

Il s'agit d'un problème de texte. L'entrée provient du bloc-notes. La sortie va vers le bloc-notes. Il ne s'agit pas d'un problème de formatage.

64voto

Zoran Pavlovic Points 388

Notepad++ possède un plugin qui fait cela pour vous. Il s'appelle " Alignement des codes ". Il vous permet d'aligner le texte verticalement sur la base des caractères de votre choix. Vous pouvez l'installer via le gestionnaire de plugins pour notepad.

Vous trouverez ci-dessous un scénario d'utilisation simple. Vous commencez avec le code suivant, puis vous alignez par "equals" qui est un raccourci/commande intégré pour le plugin.

Initial Code Sample, without alignment

Après cela, vous obtenez le résultat suivant :

Code after equals alignment

Vous pouvez également aller un peu plus loin et utiliser la commande "align by..." qui vous permet de spécifier n'importe quelle chaîne d'alignement arbitraire. Dans l'exemple ci-dessous, j'ai choisi le caractère "#" afin d'aligner mes commentaires les uns à côté des autres. Cela aurait tout aussi bien pu être une chaîne plus longue, et non une chaîne de longueur 1.

Résultat final ci-dessous :

Final result after arbitrary code alignment string

29voto

iSpardz Points 49

Si vous voulez aligner par des caractères spécifiques, utilisez l'extension TextFX de Notepad++.

Regardez : TextFX > Édition TextFX > Aligner plusieurs lignes par (,)

Il y en a aussi : Aligner plusieurs lignes par (=), et Aligner plusieurs lignes par (caractère du presse-papiers)

Voici un lien vers des conseils utiles pour la programmation.

http://techbrij.com/518/10-notepad-tips-tricks-fast-development

6voto

Notepad++ TextFX n'est plus pris en charge ni maintenu. Le plugin d'alignement de code aligne uniquement la première occurrence du caractère d'alignement de colonne.

J'ai résolu le problème en utilisant un service en ligne gratuit : https://onlinetexttools.com/convert-text-to-nice-columns

3voto

Dorian Grv Points 21

ElasticTabstops fait en fait exactement le travail que je recherchais lorsque vous travaillez avec des onglets. Aligner sans ajouter de caractères (espaces ou tabulations).

0voto

Guvante Points 10338

Vous n'avez pas indiqué de langage de programmation, voici donc un peu de C# qui effectue l'opération demandée :

int[] maxLengths = new int[100];
string[][] splitLines = new string[input.Length][];
for (int i = 0; i < input.Length; i++)
{
    splitLines[i] = input[i].Split(' ');
    for (int j = 0; j < splitLines[i].Length; j++)
    {
        maxLengths[j] = Math.Max(maxLengths[j], splitLines[i][j].Length);
    }
}
for (int i = 0; i < splitLines.Length; i++)
{
    for (int j = 0; j < splitLines[i].Length; j++)
    {
        Console.Write(string.Format("0,-" + (maxLengths[j] + 1) + ":G}", splitLines[i][j]));
    }
    Console.WriteLine();
}

Notez que 100 doit être supérieur ou égal au nombre de segments par ligne. Vous pouvez faire en sorte que ce nombre ne soit pas fixé avec un peu de travail si vous le souhaitez.

En gros, cet algorithme divise chaque ligne en fonction des espaces, puis pour chaque partie, il calcule le maximum dans un tableau commun. Enfin, il boucle sur toutes ces parties segmentées et les imprime justifiées à gauche en utilisant des espaces pour la plus grande taille (plus 1 pour obtenir l'espace entre les éléments).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X