【发布时间】:2017-10-30 10:01:29
【问题描述】:
我有这样的文字:
1;a;3;;
2;abc;4;;
3;abcde;5;;
我想用notepad++将文本向右对齐,所以变成这样:
1;a;3;;
2;abc;4;;
3;abcde;5;;
如何做到这一点?
【问题讨论】:
标签: regex notepad++ text-formatting
我有这样的文字:
1;a;3;;
2;abc;4;;
3;abcde;5;;
我想用notepad++将文本向右对齐,所以变成这样:
1;a;3;;
2;abc;4;;
3;abcde;5;;
如何做到这一点?
【问题讨论】:
标签: regex notepad++ text-formatting
我认为您需要两个主要步骤。在 Notepad++ 中,选择 Plugins -> Plugin Manager 并检查是否安装了 TextFX Characters 插件。
用例 1 的解决方案
用例 1 的解决方案(续)
^(.+?)(\h+)
\2\1
用例 2 的解决方案
复制用作分隔符的字符“;”到剪贴板并选择所有行。
选择 TextFX -> TextFX Edit -> 按(剪贴板字符)排列多行:
特殊用例 3
顺便说一句 - 您可能想要使用 Ctrl+Alt+R 来查看和写入右对齐并通过使用切换回来 Ctrl+Alt+L左对齐。
【讨论】:
这可以通过三个步骤来完成。第一:找到文件中最长行的长度,设为N。其次在每行的开头添加N 空格。第三,从每行中删除前导空格,以便它们每个都有 N 字符。
更详细:
第一步,手动扫描文件找到最长的行并统计字符数。这给出了N。
对于这两种替换,请确保未选择“点匹配换行符”。
第二步,将^(.) 替换为____\1,其中____ 是N 空格。还有其他添加这些空格的方法,例如使用列模式在每行的开头选择一个宽度为零的列,然后输入N 空格。
第三步,用\1 替换^ +(.{N})$ 的正则表达式。当然,N 被替换为 N 的值。
【讨论】:
您要右对齐的文本必须在一个矩形块中,如下所示。如果您在准备文本时需要帮助,请跳至下面的入门提示部分。
• 包含没有 TAB 字符
• 左对齐
• 右填充空格字符到所需大小
多次重复应用以下regular expression,直到它停止匹配:
<PATTERN>(^.*?) (?= *$)</PATTERN>
<REPLACE> $1</REPLACE>
有很多方法最终得到满足上述标准的矩形文本块,并且技术和场景产生了很多变化。其中大部分与手头的问题没有直接关系,因此我不会尝试显示详细的步骤,而是在此处列出一些有用的点。
要左对齐文本,或等效地,删除每行的前导空格,选择所需的行,然后按 shift-tab 无数次,直到每一行都被塞到最左边。
要将 TAB 转换为空格字符,请使用 编辑/空白操作/TAB 到空格菜单选项。
note:如果您打算将选定的行或矩形文本块复制到新的临时文档中以便于处理,则通常应将 TAB 转换为空格在复制之前应用于原始源文档,因为文档中的起始列位置会影响转换过程。
虚拟空间是文档中位于其相应行最后一个字符右侧的任何空白区域。要将打字光标放置在虚拟空间中,请使用 alt-mouse-click。
starter hint:如果您不熟悉在 Notepad++ 中操作空白和虚拟空间,您可能需要打开 Visible White空间功能。从查看/显示符号菜单中选择它。
要右填充一行空格字符,只需将光标放在虚拟空间中所需的位置,然后按空格键。该行将用空格填充,因此光标处不再有虚拟空格,而是一个空格字符。
要为复制、粘贴、删除或键入文本创建矩形选择,请使用alt-鼠标拖动。
矩形选择可以跨越虚拟空间。如果复制跨越虚拟空间的矩形块,则这些区域将被复制为虚拟空间(即,不右填充空格)。如果随后将此块粘贴到目标位置,使其与右侧有文本的行相交,则可能会造成混乱。
您可以使用创建一个高垂直输入“光标”,通过创建一个零字符宽的矩形选择(参见上一个提示),让您一次在多行上输入。
要一次right-pad 多行,请创建一个高垂直光标(参见上一个提示)并按键盘上的空格。
note:当 right-padding 行如此处所述时,填充可能包含一个额外的空格字符你打算。这是因为空格字符被添加直到并包括您在虚拟空间中单击的位置。如果是这样,只需按 backspace。
用空格字符将左对齐的文本向右填充到所需的大小。尽管示例中未显示,但所需的右填充可以延伸到最长的线之外。只需确保该区域是矩形并填充所需的宽度即可。右图显示了最终右对齐的结果。
【讨论】:
CodeWright 曾经使用上下文菜单来执行此操作。选择您的框,然后选择“右对齐”,您的列将右对齐。这是一个非常有用的功能,如果您可以使其更易于使用,很多用户会更频繁地使用它:)
【讨论】:
CodeWright?欢迎截图。