ANT去除空格正则表达式

3
我将获取.doc文件名并保存到下一个属性(pdf.name)中。使用正则表达式,我想要删除.doc文件名中的所有空格,并将其转换为以下形式:
NAME FILE.doc

转换为:

NAMEFILE.pdf

这是我的代码:
<propertyregex override="yes" property="pdf.name" input="@{remoteDocToPdf}" 
     regexp="\.*([[^/]+$^\.]*)\.doc" select="\1.pdf" casesensitive="true" />

1
@{remoteDocToPdf}input 参数是否包含绝对路径,例如 /var/run/myapp/NAME FILE.doc,还是只有文件名,例如 NAME FILE.doc - zb226
嗨zb226,这只是文件名。名称文件XXX XXX.doc - Alberto Garcia
请参考以下链接:https://dev59.com/xXM_5IYBdhLWcg3w43pt - martin clayton
2个回答

1
如果@{remoteDocToPdf}只包含文件名而不是绝对路径,您可以在您发布的指令之后添加此指令来删除文件名中的空格:
<propertyregex override="yes" property="pdf.name" input="${pdf.name}"
    regexp=" " replace="" global="true" />

无法一次性删除空格并进行 .doc -> .pdf 转换,因为您只能在每个 <propertyregex... 中指定 selectreplace

编辑1:我错过了在上面添加 global="true",所以只有第一个空格会被替换(至少根据 documentation)。

编辑2:关于您发布的 <propertyregex... 的注释-我相当确定正则表达式 \.*([[^/]+$^\.]*)\.doc 不是您想要的,即使它似乎按预期工作。从您的评论中,我猜测您想做的就是将 .doc 替换为 .pdf。如果是这样,请改用以下内容:

<propertyregex override="yes" property="pdf.name" input="@{remoteDocToPdf}" 
    regexp="\.doc$" replace=".pdf" />

如果您想了解正则表达式,我可以推荐阅读这篇教程


1

您可以考虑使用 Ant 资源 来完成此操作。这可能是您需要的东西:

<loadresource property="pdf.name">
    <string value="${remoteDocToPdf}" />
    <filterchain>
        <deletecharacters chars=" " />
        <replaceregex pattern=".doc$" replace=".pdf" />
    </filterchain>
</loadresource>

工作由过滤器链完成,包括两个过滤器:一个用于删除空格,另一个用于更改文件扩展名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接