プロパティ値から部分文字列を長さで抽出する必要があります。 :私は位置別のAntサブ文字列
name
値を取得したい
<property name="prop1" value="nameBLABLABLA" />
は、JavaScriptコードを使用せずに、それは可能ですか?
プロパティ値から部分文字列を長さで抽出する必要があります。 :私は位置別のAntサブ文字列
name
値を取得したい
<property name="prop1" value="nameBLABLABLA" />
は、JavaScriptコードを使用せずに、それは可能ですか?
バニラアリではなく、
Antcontrib(最新リリース2006!)またはAnt FlakaのようなAntアドオンを追加する必要があります。追加のjar /ライブラリが必要になることを意味します。
<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>
必要はありません追加のライブラリ:JDK組み込みJavaScriptエンジンを使用して
は、それが同じくらい簡単です。
一般的な文字列のプロパティごとに機能するmacrodefを作成しました。
JavaScriptエンジンはJavascriptとJavaを理解しており、Ant APIにフルアクセスできます。
私はRebseの回答のようにJavaScriptを使用しますが、<loadresource>
と<tokenfilter>
を使用しないとこれを行う方法があります。これは、部分文字列の/ toではなくstart/lengthを使用します。
<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}" />
グレート!私のために働く。 –