2012-01-10 191 views
46

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

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 

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

+0

你不能使用表? – j08691 2012-01-10 18:08:34

+1

怎么样?我有什么是记事本中的文字。我可以把数据放入数据库中 - 我想。但是“列”的数量每次都会有所不同。我想要的是将这个文本粘贴到一个黑盒子中,点击一个按钮,并获得输出。我认为emacs有这样的东西。 – 2012-01-10 18:13:52

+0

这听起来像你的标签是不正确的,你有问题标签为HTML,但拒绝有关html的建议。 – Guvante 2012-01-10 18:28:43

回答

56

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

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

Initial Code Sample, without alignment

之后,你最终会与下面的以下内容:

Code after equals alignment

你也可以把它更进一步,并使用“对齐方式...”命令,它允许你可以指定任意的对齐字符串。在下面的示例中,我选择了“#”字符以便将我的注释相互对齐。这可以很容易地一直更长的字符串,而不是长度的1

最终结果如下:

Final result after arbitrary code alignment string

+3

这工作精美,并且远远优于TextFX,它不会与多余的空格对齐。 “代码对齐”非常精彩,正是我需要根据STRINGS缩进一些Java代码!不只是一个角色。 A ++++给谁写的插件。 – Ligemer 2013-12-02 19:08:20

+0

第一次没有工作,但经过三次“空间”对齐后,看起来不错,谢谢 – knocte 2015-12-18 05:14:46

+0

不幸的是,当我试图[通过逗号]对齐时,这个插件并不适用于我i.imgur.com/FSNuY5r.png) – 2017-05-05 13:41:13

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以获得项目之间的空间)。

+0

这是一个矫枉过正的问题。文本是在记事本++(输入)和OP想格式化文本在记事本++(输出) – 2016-10-26 19:26:01

+0

@anphu:问题不包括notepad ++中的任何地方。记事本提供绝对没有这样的东西,所以触摸不同的程序是必要的。我碰巧写到控制台,但您可以等效地写入您读取的文件并获得相同的效果。 – Guvante 2016-10-28 22:39:06

+0

问题标记在Notepad ++ – 2016-10-28 23:38:54

26

如果要通过特定字符对齐用记事本++的扩展TextFX。

看:TextFX> TextFX编辑>排队多行由(,)

还有:排队多行由(=),和通过(剪贴板字符)

排队多行

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

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

+0

每当我尝试代码对齐插件,它会冻结notepad ++,然后在恢复时不会做任何事情。 TextFX虽然工作完美。 – 2016-04-23 02:44:30

+0

这也适用于我,将TSQL结果集复制到记事本++(哪些制表符分隔)。我能排列大约400行50列。但是,TextFX不会识别标签作为剪贴板字符,它甚至不会接受“\ t”,但幸运的是,我能够用逗号替换标签,按列排列,然后再次更改逗号(幸运的是,在我的sql输出中没有制表符或逗号!) – 2017-03-06 14:14:47

+0

TextFX是一个很好的插件,但通过'='对齐导致'='和前面的字符之间没有前导空格。 – u01jmg3 2017-04-15 00:56:28

0

我创建了一个Python脚本,可以使用Python脚本插件在记事本++使用:nppPyAlignColumn

+0

嗨,杜尊。你的脚本看起来很棒。但是,我无法安装它。在我做完所有事情之后,菜单中没有任何“脚本”,也许它与最新版本的notepad ++不兼容? – user15964 2016-07-19 11:25:56

+0

如果您在NPP文件夹中没有'doLocalConf.xml'文件,请将'AlignColumns.py'复制到'%APPDATA%\ Notepad ++ \ plugins \ Config \ PythonScript \ scripts \'。 – DUzun 2016-07-21 22:22:51

相关问题