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.
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.
Après cela, vous vous retrouvez avec ce qui suit:
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:
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
J'ai créé un script Python pouvant être utilisé avec Python Script Plugin dans Notepad ++: nppPyAlignColumn
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).