Имеет ли Ant какой-либо способ выполнения строчных или строчных операций с верхним или нижним регистром /capialize/uncaptialize? Я посмотрел на PropertyRegex, но я не верю, что последние два возможны. Это что-нибудь еще?
Ant строковые функции?
Ответ 1
Из этого потока используйте задачу Ant <script>
:
<target name="capitalize">
<property name="foo" value="This is a normal line that doesn't say much"/>
<!-- Using Javascript functions to convert the string -->
<script language="javascript"> <![CDATA[
// getting the value
sentence = project.getProperty("foo");
// convert to uppercase
lowercaseValue = sentence.toLowerCase();
uppercaseValue = sentence.toUpperCase();
// store the result in a new property
project.setProperty("allLowerCase",lowercaseValue);
project.setProperty("allUpperCase",uppercaseValue);
]]> </script>
<!-- Display the values -->
<echo>allLowerCase=${allLowerCase}</echo>
<echo>allUpperCase=${allUpperCase}</echo>
</target>
Выход
D:\ant-1.8.0RC1\bin>ant capitalize
Buildfile: D:\ant-1.8.0RC1\bin\build.xml
capitalize:
[echo] allLowerCase=this is a normal line that doesn't say much
[echo] allUpperCase=THIS IS A NORMAL LINE THAT DOESN'T SAY MUCH
BUILD SUCCESSFUL
Обновить для комментария WarrenFaith для разделения script на другую цель и передать свойство из вызываемого целевого обратно к вызывающей цели
Используйте antcallback из ant -contrib jar
<target name="testCallback">
<antcallback target="capitalize" return="allUpperCase">
<param name="param1" value="This is a normal line that doesn't say much"/>
</antcallback>
<echo>a = ${allUpperCase}</echo>
</target>
и capitalise
задача использует переданную в param1
таким образом
<target name="capitalize">
<property name="foo" value="${param1}"/>
Конечный вывод
[echo] a = THIS IS A NORMAL LINE THAT DOESN'T SAY MUCH
Ответ 2
вы можете использовать задачу script и использовать поддерживаемый jsr223 script язык, такой как javascript, jruby, jython,... для обработки вашей строки