如何在Notepad ++中填充带空格的字段,直到长度为止

时间:2013-06-17 13:27:55

标签: macros notepad++

我在Notepad ++中准备了一个宏来转换带有几个字段的csv文件中的ldif文件。一切都很好,但我有一个最后的问题:我必须有2个具有特定长度的字段,在这一刻我无法确保长度,因为在源文件中它们不是这样的

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

我必须确保第2和第3个字段有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),但我找不到任何内容

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

我刚刚在special timestamp format of csv

中提出了类似的解决方案