我想获取.doc文件名并将其保存在下一个属性(pdf.name
)中。使用regexp我想删除.doc文件名中的所有空格并将其转换为:
NAME FILE.doc
对此:
NAMEFILE.pdf
这是我的代码:
<propertyregex override="yes" property="pdf.name" input="@{remoteDocToPdf}"
regexp="\.*([[^/]+$^\.]*)\.doc" select="\1.pdf" casesensitive="true" />
答案 0 :(得分:1)
如果@{remoteDocToPdf}
仅包含文件名而不是绝对路径,则可以通过在发布的指令后添加此指令来删除文件名中的空格:
<propertyregex override="yes" property="pdf.name" input="${pdf.name}"
regexp=" " replace="" global="true" />
无法删除空格并执行.doc
- &gt;一次性.pdf
转换,因为您只能指定select
或replace
每<propertyregex...
。
编辑1:我错过了向上面添加global="true"
,因此只会替换第一个空格(至少根据documentation)。
编辑2 关于您发布的<propertyregex...
的说明 - 我很确定正则表达式\.*([[^/]+$^\.]*)\.doc
并不是您想要的,即使它似乎按预期工作。根据您的评论,我猜您要做的只是将.doc
替换为.pdf
。在这种情况下,请改用:
<propertyregex override="yes" property="pdf.name" input="@{remoteDocToPdf}"
regexp="\.doc$" replace=".pdf" />
如果您想阅读正则表达式,我建议您阅读this tutorial。
答案 1 :(得分:1)
您可以考虑使用Ant resources来执行此操作。这可能接近您的需求:
<loadresource property="pdf.name">
<string value="${remoteDocToPdf}" />
<filterchain>
<deletecharacters chars=" " />
<replaceregex pattern=".doc$" replace=".pdf" />
</filterchain>
</loadresource>
工作由filterchain完成,由两个过滤器组成:一个删除空格,另一个更改文件扩展名。