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" />
4

2 に答える 2

1

これを行うには、 Antリソースを使用することを検討してください。これはあなたが必要とするものに近いかもしれません:

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

この作業は、スペースを削除するフィルターとファイル拡張子を変更するフィルターの 2 つのフィルターで構成されるフィルターチェーンによって行われます。

于 2012-11-27T19:46:10.687 に答える
1

@{remoteDocToPdf}絶対パスではなくファイル名のみを運ぶ場合は、投稿したディレクティブの後に次のディレクティブを追加することで、ファイル名のスペースを削除できます。

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

またはperしか指定できないため、スペースを削除して.doc->.pdf変換を一度に行うことはできません。selectreplace<propertyregex...

編集 1:上記への追加を逃したglobal="true"ため、最初のスペースのみが置き換えられます (少なくともドキュメントによると)。

編集 2:<propertyregex...あなたが投稿したメモ-\.*([[^/]+$^\.]*)\.doc意図したとおりに動作するように見えるかもしれませんが、正規表現は実際にはあなたが望むものではないと確信しています。あなたのコメントから、あなたがしたいの.doc.pdf. その場合は、代わりにこれを使用してください。

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

正規表現について詳しく知りたい場合は、このチュートリアルを読むことをお勧めします。

于 2012-11-27T14:36:20.013 に答える