【问题标题】:Automatically wrap custom XML tags and numbering them自动包装自定义 XML 标记并为其编号
【发布时间】:2017-10-16 01:59:16
【问题描述】:

我有一个需要用 XML 格式化的游戏的对话脚本,格式如下...

<line id='1'> .............. </line>
<line id='2'> .............. </line>
<line id='3'> .............. </line>
....
<line id='n'> .............. </line>

我现在给出的对话脚本是用普通格式写的,我只需要在上面的 XML 标记中包装每一行。

有没有办法自动化这个过程?

【问题讨论】:

    标签: xml notepad++ sublimetext3 sublimetext2


    【解决方案1】:

    您可以分两步实现。首先,在文本文件的每一行的开头添加一个行号。然后,将每一行包装在您需要的&lt;line&gt; XML 标记中。

    要生成行号,您可以使用列编辑器模式。首先,通过这个查找和替换在每行的开头插入一个空格:

    查找:

    (.*)
    

    替换:

     $1 (single space followed by $1)
    

    然后使用列编辑器模式在每行的开头插入生成的行号。有关如何执行此操作的更多信息,请参阅here。此时,您的数据应如下所示:

    1 Here is line one.
    2 Here is line two.
    3 Here is line three.
    ...
    111 Here is line one hundred eleven.
    

    现在您可以进行第二次查找和替换以将每一行包装在 &lt;line&gt; 标记中:

    查找:

    ([0-9]+)\s+(.*)
    

    替换:

    <line id='$1'>$2</line>
    

    【讨论】:

    • 谢谢,但我无法让它工作。第一步在每行中给我一个“s”,第二步不会用标签包裹所有行(只有第 1-9 行)。你可以用下面的示例进行测试吗? pastebin.com/mYzeedSV 注意引号还是需要的。
    • @Ran_TH 我打错字了。请再试一次我的回答。
    • 好的,现在可以了!但是当添加行号时,它会在第 1-9 行添加双倍空格,因此最终结果中有一个空格。 i.imgur.com/dPNMahh.jpg
    • 然后使用([0-9]+)\s+(.*) 消耗行号和文本之间的所有空格。我不确定您是否想在每一行保留原始的前导空格。
    猜你喜欢
    • 2015-12-22
    • 2020-09-08
    • 2022-01-08
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多