web-dev-qa-db-fra.com

Vous cherchez un moyen facile d'aligner le texte

J'ai un problème commun pour lequel je cherche une solution… .. J'ai des lignes de texte similaire que je souhaiterais insérer automatiquement du texte pour les aligner verticalement

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

Ceci est un problème de texte. L'entrée provient du bloc-notes. La sortie va au bloc-notes. Ce n'est pas un problème de formatage. 

50
jhon smith optional

Notepad ++ a un plugin qui le fait pour vous. Cela s'appelle " Alignement du code ". Il vous permet d’aligner le texte verticalement en fonction des caractères de votre choix. Vous pouvez l'installer via le gestionnaire de plugins pour le bloc-notes. 

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

Initial Code Sample, without alignment

Après cela, vous vous retrouvez avec ce qui suit:

Code after equals alignment

Vous pouvez également aller plus loin et utiliser la commande "align by by ..." qui vous permet de spécifier une chaîne d'alignement quelconque. Dans l'exemple ci-dessous, j'ai choisi le caractère "#" afin d'aligner mes commentaires les uns sur les 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

58
Zoran Pavlovic

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

Regardez: TextFX> TextFX Édition> Alignez plusieurs lignes avec (,)

Il existe également: Alignez plusieurs lignes avec (=) et Alignez plusieurs lignes avec (Caractère du presse-papier).

Voici un lien pour des conseils utiles pour la programmation.

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

29
iSpardz

J'ai créé un script Python pouvant être utilisé avec Python Script Plugin dans Notepad ++: nppPyAlignColumn

0
DUzun

Vous n’avez pas répertorié de langage de programmation, voici donc un 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 corrigé avec un peu de travail si vous le souhaitez.

Fondamentalement, cet algorithme divise chaque ligne en fonction des espaces, puis calcule le maximum pour chaque partie dans un tableau commun. Enfin, il parcourt toutes ces pièces segmentées et les imprime en utilisant des espaces à la plus grande taille (avec la valeur 1 pour obtenir l'espace entre les éléments).

0
Guvante