寻找一种简单的方法来对齐文本

时间:2012-01-10 18:03:14

标签: notepad++

我有一个常见的问题,我正在寻找解决方案。 我有类似文本的行我想以某种方式自动插入文本以垂直对齐它们 这样:

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

这是一个文字问题。输入来自记事本。输出将转到记事本。这不是格式化问题。

6 个答案:

答案 0 :(得分:58)

Notepad ++有一个插件可以帮到你。它被称为“Code alignment”。它允许您根据您选择的字符垂直对齐文本。您可以通过插件管理器为记事本安装它。

以下是一个简单的使用场景。首先使用以下代码,然后使用“equals”对齐,这是插件的内置快捷方式/命令。

Initial Code Sample, without alignment

之后,您最终得到以下内容:

Code after equals alignment

您还可以更进一步使用“align by ...”命令,该命令允许您指定任意对齐字符串。在下面的示例中,我选择了“#”字符,以便将我的注释彼此相邻。这可能很容易就是一个较长的字符串,而不是长度为1的字符串。

以下结果:

Final result after arbitrary code alignment string

答案 1 :(得分:29)

如果要按特定字符对齐,请使用Notepad ++扩展名TextFX。

看看:TextFX> TextFX编辑>按(,)

排列多行

还有:按(=)排列多行,并按(剪贴板字符)排列多行

以下是有关编程的有用提示的链接。

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

答案 2 :(得分:3)

Notepad ++ TextFX不再受支持和维护。代码对齐插件仅对齐列对齐字符的第一个匹配项。

我使用免费的在线服务解决了这个问题: https://onlinetexttools.com/convert-text-to-nice-columns

答案 3 :(得分:0)

您没有列出编程语言,因此这里有一些执行请求操作的C#:

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 :(得分:0)

我创建了一个可以在Notepad ++中与Python Script Plugin一起使用的Python脚本:nppPyAlignColumn

答案 5 :(得分:0)

ElasticTabstops实际上确实可以满足您在使用标签页时所寻找的工作。 对齐而不添加字符(空格或制表符)。