我想更换
step="1" step="2" step="5" step="33"
与以下
step="1" step="2" step="3" step="4"
我希望被替换的数字将其迭代修正 1。
到目前为止,我的发现:
step="\d"
效果很好。我可以用什么来代替?
我想更换
step="1" step="2" step="5" step="33"
与以下
step="1" step="2" step="3" step="4"
我希望被替换的数字将其迭代修正 1。
到目前为止,我的发现:
step="\d"
效果很好。我可以用什么来代替?
如果您正在使用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="="\d""/>
</condition>
<if><isset property="true"/>
<then>
<propertyregex property="xx" input="@{str}" regexp="(=")\d(")" 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>
来完成这个任务,同时我会试着写。