2

我在 Notepad++ 中准备了一个宏,用于将 ldif 文件转换为具有几个字段的 csv 文件。一切正常,但我有最后一个问题:我必须有 2 个具有特定长度的字段,此时我无法确保该长度,因为在源文件中它们不会出现

例如,我生成这一行:12345,namenamename,123456

而且我必须确保第二个和第三个字段有 30 个(右侧填充空格)和 9 个(左侧填充零)字符,所以在这种情况下我应该生成: 12345,namenamename ,000123456

我还没有发现 Notepad++ 如何匹配模式以添加空格/零,所以我不得不在正确的字段中添加 1 个空格/零,并根据需要重复此步骤多次以确保长度(这是, 29 和 8,因为它们不能为空)并使用正则表达式中的长度进行搜索(例如:\d{1,8} 用于第三个字段)

我的问题是:我可以多次重复宏的一个步骤(宏的其余部分只重复 1 次)吗?

我已经阅读了与这一点相关的维基(http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Editing_Configuration_Files#.3CMacros.3E),我也没有找到任何东西

如果不可能,怎么可能是一个好的解决方案?创建另外 2 个不同的宏,在执行主宏之后,执行这新的 2 个宏几次?

提前致谢!

4

1 回答 1

1

使用 Notepad++ 的两遍解决方案是可能的。查找数据文件中从未出现过的一对字符或两个短字符序列。我将在这里使用=#<==>#=

首先将输入文本传递、生成或转换为表单12345,=#<=namenamename______________________________,000000000123456=>#=。即在名称后添加 30 个空格,在数字前添加 9 个零(这里使用下划线只是为了让事情更清楚)。

第二遍,进行正则表达式搜索=#<=(.{30})_*,0*(\d{9})=>#=并替换为\1,\2.

我刚刚以 csv 的特殊时间戳格式提出了类似的解决方案

于 2013-06-17T15:41:00.890 回答