首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ant-contrib : equals在for循环中不起作用

Ant-contrib : equals在for循环中不起作用
EN

Stack Overflow用户
提问于 2015-02-25 00:36:11
回答 1查看 145关注 0票数 2

我有一个文件build.properties:

代码语言:javascript
复制
a=test1
b=
c=test2

和一个文件build.xml:

代码语言:javascript
复制
<property file="build.properties" />    

<for list="${a},${b},${c}" param="params">
    <sequential>
        <echo message="@{params}"></echo>
        <if>
            <equals arg1="@{params}" arg2=""/>
            <then><echo message="empty"/></then>
            <else><echo message="ok"/></else>
        </if>
    </sequential>
</for>

我得到了:

代码语言:javascript
复制
[echo] test1
[echo] ok
[echo] test 2
[echo] ok

但我想:

代码语言:javascript
复制
[echo] test1
[echo] ok
[echo] empty
[echo] test 2
[echo] ok

发生什么事了?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-02-25 01:21:47

Ant-Contrib的for任务使用Java StringTokenizer类来标记化参数列表。当使用这个类进行标记化时,会跳过空的标记,在您的例子中,属性b就是这种情况。

一种解决方案是在逗号分隔的列表中添加空格,并在循环体中修剪标记:

代码语言:javascript
复制
<for list="${a}, ${b}, ${c}" param="params">
    <sequential>
        <propertyregex override="yes" property="trimmed.param" input="@{params}"
                regexp=" " replace="" global="true" defaultValue="@{params}" />
        <echo message="${trimmed.param}"/>
        <if>
            <equals arg1="${trimmed.param}" arg2=""/>   
            <then>
                <echo message="empty"/>
            </then>
            <else>
                <echo message="ok"/>
            </else>
        </if>
    </sequential>
</for>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28701236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档