我有一个常见问题,正在寻找解决方案。 我有几行类似的文本,我想以某种方式自动插入文本以垂直对齐它们 这样:
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
这是一个文本问题。输入来自记事本。输出将写入记事本。这不是格式问题。
Notepad++ 有一个插件可以为您完成此操作。这称为“代码对齐”。它允许您根据您选择的字符垂直对齐文本。您可以通过记事本插件管理器安装它。
下面是一个简单的使用场景。您从以下代码开始,然后通过“等于”对齐,这是插件的内置快捷方式/命令。
之后,您将得到以下结果:
您还可以更进一步,使用“align by...”命令,该命令允许您指定任意对齐字符串。在下面的示例中,我选择了“#”字符,以便将我的注释彼此对齐。这很可能是一根较长的字符串,而不是长度为 1 的字符串。
最终结果如下:
如果您想按特定字符对齐,请使用 Notepad++ 扩展 TextFX。
查看:TextFX > TextFX 编辑 > 按 (,) 排列多行
还有:通过(=)排列多行、通过(剪贴板字符)排列多行
这里是有关编程有用提示的链接。
http://techbrij.com/518/10-notepad-tips-tricks-fast-development
Notepad++ TextFX 不再受支持和维护。代码对齐插件仅对齐第一次出现的列对齐字符。
我使用免费的在线服务解决了问题: https://onlinetexttools.com/convert-text-to-nice-columns
ElasticTabstops 实际上正是我在使用选项卡时正在寻找的工作。 对齐而不添加字符(空格或制表符)。
我创建了一个可以与 Notepad++ 中的 Python 脚本插件一起使用的 Python 脚本:nppPyAlignColumn
您没有列出编程语言,因此这里有一些执行请求操作的 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 以获取项目之间的空间)。
我用 C# 编写了一个程序,可以帮助您创建文本列或 .bdf nastran 文件。有关该软件如何工作的更多信息,您可以观看此视频并评论它以向您提供该软件。 https://www.youtube.com/watch?v=nsTkeEj15xo