1

我想更换

step="1" step="2" step="5" step="33"

与以下

step="1" step="2" step="3" step="4"

我希望被替换的数字将其迭代修正 1。

到目前为止,我的发现:

step="\d"

效果很好。我可以用什么来代替?

4

1 回答 1

0

如果您正在使用ant并已包含ant-contrib在您的项目中..
您可以使用该<math>任务来增加 a 的值var

假设${STEP_STRING}= step="1" step="2" step="5" step="33"
生成${NEW_STRING}=step="1" step="2" step="3" step="4"

<var name="ctr" value="1"/>
<var name="ctr_str" value="step"/>
<var name="NEW_STRING" value=""/>

<for list="${STEP_STRING}" delimiter="${ctr_str}" param="str">
   <sequential>          
      <condition property="true">
          <matches string="@{str}" pattern="=&quot;\d&quot;"/>
      </condition>
      <if><isset property="true"/>
          <then>
             <propertyregex property="xx" input="@{str}" regexp="(=&quot;)\d(&quot;)" replace="\1${ctr}\2" override="true"/>
             <var name="NEW_STRING" value="${NEW_STRING} ${ctr_str}${xx}"/>
             <math result="ctr" operand1="${ctr}" operand2="1" operation="+" datatype="int" />
          </then>
      </if>
   </sequential>
</for>
<echo>${NEW_STRING}</echo>  

我认为这将生成所需的字符串,虽然我还没有测试它,但它会构建一个新字符串而不是替换以前的字符串(你正在寻找的)。更换在挑选Nth occurrence of="\d". 我想你需要一个自定义<scriptdef>来完成这个任务,同时我会试着写。

于 2014-06-23T22:18:57.617 回答