Notepad++ 或其他应用程序用数字函数替换字符串

Notepad++ 或其他应用程序用数字函数替换字符串

我正在使用 Notepad++,并尝试用已被特定变量修改的新字符串替换特定标记(我的 XML 文档的 xxxx)内的所有数字字符串。以下是示例:

<start>501234</start>

舍入(501234 * 0.9)= 451111

<start>451111</start>

有没有办法自动找到开始标记内的所有数值,并用乘以 0.9 的相同值替换它?如果有其他工具可以做到这一点,我就不必使用 Notepad++。

谢谢!

答案1

使用语法修改 input.xml:

<bla>
     <start>501234</start>
     <end>12345</end>
</bla>

start并且您想将标签之间的数字乘以0.9,那么创建一个“转换文件”(transform.xsl):

<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>

<!-- copy everything else -->
<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<!-- transform what we are interested in -->
<xsl:template match="start">
    <foo><xsl:value-of select="number(.) * 0.9" /></foo>
</xsl:template>
</xsl:stylesheet>

并像这样应用它:

% xsltproc transform.xsl input.xml

答案2

如果您对编程有一点了解,您可以非常轻松地编写自己的程序。您可以使用 XPathNavigator 对象结合 C# 或 VB 来解析 XML,完成这样的任务,您不应该花费超过半个小时的时间。

使用 Visual Sudio 的一些免费版本开始您自己的项目,然后带着您的问题来到 Stackoverflow.com。

答案3

一个非常简单的解决方案是编写一个脚本(可能是 perl)来对变量进行查找和替换。这个字符串匹配两个标签变量之间的所有内容]>(.?)。在 perl 中,您只需将此正则表达式的结果乘以 .9,然后重写答案即可。我经常处理更新大型 xml 文件,而 perl 是迄今为止解决我所有问题的最简单的方法

相关内容