【问题标题】:ANT remove blank spaces regexpANT 删除空格正则表达式
【发布时间】:2012-11-15 01:52:08
【问题描述】:

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

NAME FILE.doc

到这里:

NAMEFILE.pdf

这是我的代码:

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

【问题讨论】:

  • input@{remoteDocToPdf} 是否带有像 /var/run/myapp/NAME FILE.doc 这样的绝对路径,或者只是像 NAME FILE.doc 这样的文件名?
  • 您好 zb226,这只是文件名。名称文件 XXX XXX.doc

标签: regex ant spaces ant-contrib


【解决方案1】:

如果@{remoteDocToPdf} 仅带有文件名而不是绝对路径,您可以通过在您发布的指令后面添加此指令来删除文件名中的空格:

<propertyregex override="yes" property="pdf.name" input="${pdf.name}"
    regexp=" " replace="" global="true" />

无法一次性删除空格并执行.doc -> .pdf 转换,因为您只能根据&lt;propertyregex... 指定selectreplace

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

编辑 2: 关于您发布的 &lt;propertyregex... 的注释 - 我很确定正则表达式 \.*([[^/]+$^\.]*)\.doc 并不是您真正想要的,即使它看起来可能按预期工作。根据您的评论,我猜您想要做的就是将.doc 替换为.pdf。在这种情况下,请改用这个:

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

如果您想阅读正则表达式,我可以推荐阅读this tutorial

【讨论】:

  • 不客气-如果我的回答对您有帮助,请接受:)
【解决方案2】:

您可以考虑使用 Ant resources 来执行此操作。这可能接近您的需要:

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

这项工作由filterchain 完成,它由两个过滤器组成:一个用于删除空格,另一个用于更改文件扩展名。

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2016-06-17
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多