【问题标题】:How to fill a field with spaces until a length in Notepad++如何在记事本++中用空格填充字段直到长度
【发布时间】:2013-06-17 13:27:54
【问题描述】:

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

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

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

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

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

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

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

提前致谢!

【问题讨论】:

    标签: macros notepad++


    【解决方案1】:

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

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

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

    我刚刚在special timestamp format of csv中提出了类似的解决方案

    【讨论】:

      猜你喜欢
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多