Подтвердить что ты не робот

Поиск простого способа выравнивания текста

У меня есть общая проблема, с которой я ищу решение. У меня есть строки аналогичного текста, я бы хотел как-то автоматически вставить текст, чтобы выровнять их по вертикали такой, что:

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

становится этим

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

Это текстовая проблема. Вход поступает из блокнота. Выход будет в блокноте. Это не проблема форматирования.

4b9b3361

Ответ 1

В Notepad ++ есть плагин, который сделает это за вас. Он называется " выравнивание кода". Он позволяет выровнять текст по вертикали на основе выбранных вами символов. Вы можете установить его через Plugin Manager для блокнота.

Ниже приведен простой сценарий использования. Вы начинаете со следующего кода, затем вы выравниваете по "equals", который является встроенным ярлыком/командой для плагина.

Initial Code Sample, without alignment

После этого вы получите следующее:

Code after equals alignment

Вы также можете сделать еще один шаг и использовать команду "align by...", которая позволяет указать любую произвольную строку выравнивания. В приведенном ниже примере я выбрал символ "#", чтобы выровнять мои комментарии рядом друг с другом. Это так же легко было бы более длинной строкой, а не одной длиной.

Конечный результат:

Final result after arbitrary code alignment string

Ответ 2

Если вы хотите выровнять по определенным символам, используйте расширение Notepad ++ TextFX.

Посмотрите: TextFX > TextFX Edit > Выровняйте несколько строк с помощью (,)

Есть также: выровнять несколько строк по (=) и выровнять несколько строк (символ буфера обмена)

Вот ссылка на полезные советы для программирования.

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

Ответ 3

Вы не указали язык программирования, поэтому вот несколько С#, которые выполняют запрошенную операцию:

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();
}

Обратите внимание, что 100 должно быть больше или равно числу сегментов на строку. Вы можете заставить это число не исправляться с небольшой работой, если хотите.

В основном этот алгоритм разбивает каждую строку на основе пробелов, затем для каждой части вычисляет максимум в общий массив. Наконец, он проходит через все эти сегментированные части и печатает их с выравниванием по левому краю с использованием пробелов до наибольшего размера (плюс 1 для получения пробела между элементами).

Ответ 4

Я создал Python Script, который можно использовать с Python Script Плагин в Notepad ++: nppPyAlignColumn