2012-11-27 4 views
3

.doc 파일 이름을 가져 와서 다음 속성 (pdf.name)에 저장하고 싶습니다. 이에ANT 공백 제거 regexp

NAME FILE.doc 

:

<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

+0

안녕 zb226, 그냥 파일 이름입니다. 이름 파일 XXX XXX.doc –

+0

참조 http://stackoverflow.com/questions/1176071/replacing-characters-in-ant-property –

답변

1
:

NAMEFILE.pdf 

이 내 코드입니다 나는 .doc 파일 이름의 모든 공백을 제거하고이에서를 변환하는 정규 표현식을 원하는 사용

@{remoteDocToPdf}에 파일 이름 만 있고 절대 경로가 아닌 경우 게시 한 파일 다음에이 지시문을 추가하여 파일 이름의 공백을 제거 할 수 있습니다.

당신은 단지 하나 select 또는 <propertyregex...replace를 지정할 수 있기 때문에, 한 번에> .pdf 변환 -
<propertyregex override="yes" property="pdf.name" input="${pdf.name}" 
    regexp=" " replace="" global="true" /> 

그것은 공간을 삭제하고 .doc을 할 수 없습니다.

편집 1 : 나는 위에서 global="true"를 추가 놓친, 그래서 첫 번째 공간 (최소의 documentation에 따라) 교체되었을 것입니다.

편집 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에 의해 수행되고있다.