按位置按位置

  • 本文关键字:位置 ant
  • 更新时间 :
  • 英文 :


我需要从属性值中提取一个子字符串,f.e。:

<property name="prop1" value="nameBLABLABLA" />

我想获得值

name

不使用JavaScript代码可以吗?

不是与香草蚂蚁一起,您需要添加一些蚂蚁插件,例如
antcontrib(2006年最新版本!)或ant flaka-意味着您需要其他罐子/库。<<<<<<<<<<br>使用JDK内置JavaScript引擎,它很容易:

<project>
<!-- create a macrodef for reuse -->
<macrodef name="getsubstring">
 <attribute name="src"/>
 <attribute name="from"/>
 <attribute name="to"/>
 <attribute name="result"/>
 <sequential>
  <script language="javascript">
   project.setProperty(
    "@{result}", "@{src}".substring(@{from},@{to})
    );
  </script>
 </sequential>
</macrodef>
<property name="foo" value="nameBLABLABLA"/>
<getsubstring src="${foo}" from="0" to="4" result="foobar"/>
<echo> $${foobar} => ${foobar}</echo>
</project>

无需其他库。
创建了一个分别适用于字符串的属性的macrodef。
JavaScript引擎了解JavaScript和Java,您将可以完全访问Ant API。

我会在rebse的答案中使用javascript,但是在不使用 <loadresource><tokenfilter>的情况下,有一种方法可以做到这一点。这使用启动/长度,而不是从/到substring:

<macrodef name="getsubstring">
  <attribute name="src"/>
  <attribute name="start"/>
  <attribute name="length"/>
  <attribute name="result"/>
  <sequential>
    <loadresource property="@{result}">
      <string value="@{src}}" />
        <filterchain>
          <tokenfilter>
            <replaceregex pattern="^.{@{start}}(.{@{length}}).*" replace="1" />
          </tokenfilter>
        </filterchain>
    </loadresource>
  </sequential>
</macrodef>
<property name="prop1" value="nameBLABLABLA" />
<getsubstring src="${prop1}" start="0" length="4" result="p"/>
<echo message="${p}" />

相关内容

  • 没有找到相关文章

最新更新