2012-11-27 1 views
3

Я хочу получить имя файла .doc и сохранить его в следующем свойстве (pdf.name). Использование регулярных выражений Я хочу, чтобы удалить все пробелы в имени файла .doc и превратить его из этого:ANT удалить пробелы regexp

NAME FILE.doc 

К этому:

NAMEFILE.pdf 

Это мой код:

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

Имеет ли 'input'' @ {remoteDocToPdf} 'абсолютный путь, например'/var/run/myapp/NAME FILE.doc', или просто имя файла, например 'NAME FILE.doc'? – zb226

+0

Привет, zb226, это просто имя файла. ИМЯ ФАЙЛА XXX XXX.doc –

+0

См. Http://stackoverflow.com/questions/1176071/replacing-characters-in-ant-property –

ответ

1

Если @{remoteDocToPdf} содержит только имя файла, а не абсолютный путь, вы можете удалить пробелы в имени файла, добавив эту директиву после того, как вы опубликовали:

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

Это невозможно удалить пробелы и сделать .doc - преобразование>.pdf на одном дыхании, так как вы можете только указать либо select или replace за <propertyregex....

Редактировать 1: я пропустил добавление к global="true" выше, так что только первое пространство было бы заменить (в соответствии с documentation, по крайней мере).

Edit 2: записку на <propertyregex... ты отвечал - я уверен, что регулярное выражение \.*([[^/]+$^\.]*)\.doc не совсем то, что вы хотите, даже если это может показаться, что работать, как предполагалось. Из вашего комментария я предполагаю, что все, что вы хотите сделать, это заменить .doc на .pdf. В этом случае, пожалуйста, используйте вместо этого:

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

Если вы хотите читать на регулярных выражениях, я рекомендую прочитать this tutorial.

+0

Большое спасибо! –

+0

Добро пожаловать. Если мой ответ вам помог, пожалуйста, примите его :) – zb226

1

Чтобы это сделать, вы можете использовать Ant resources. Это может быть близко к тому, что вам нужно:

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

Работа ведется по filterchain состоит из двух фильтров: один, который удаляет пробелы, и тот, который изменяет расширение файла.