2017-04-07 1 views
1

fileString으로 변환하려고 시도하고 난 후에 변환 된 파일의 이름을 숫자가 아닌 문자로 바꾸지 만 파일을 바꿀 때 파일의 확장자도 대체됩니다. 예를 들어 (2014.05-06.txt->20140506.txt) 무슨 일 이냐는 20140506txt입니다. .txt, .log 또는 확장 유형을 유지하고 싶습니다.자바의 확장자를 제외한 파일 이름에서 숫자가 아닌 문자 제거

String strDatefiles = Arrays.toString(saDateFiles).replaceAll("[\\W]", "");

편집 :

String[] saDateFiles = fileList.list(); 
String strDatefiles = Arrays.toString(saDateFiles.substring(0, saDateFiles.lastIndexOf("."))).replaceAll("[\\W]", "");  

saDateFiles.lastIndexOf("."))) 오류가 길이로 교체했다?

Edited2 :

String[] saDateFiles = fileList.list(); 
String strDatefiles = Arrays.toString(saDateFiles).substring(0, Arrays.toString(saDateFiles).lastIndexOf(".")).replaceAll("[\\W]",""); 
System.out.println(strDatefiles);` 

출력 : 20140502txt20140904 (I 안에이 개 파일이)

+1

옵션 # 1) 먼저 확장을 분할 다시 확장에 압정을 정규식을 실행합니다. 옵션 # 2) 당신의 정규 표현식을 고친다. 옵션 # 3) regex가 머리에 맞으면 (그게 사실이야.) 대체 할 다른 접근 방식을 취하면된다. (루프?) – domsson

+0

@domdom 나는 자바 btw에 대해 새로운데, 어떻게 플로우가 더 많은지 설명 할 수 있을까? ? – user123040569

+0

다른 사람들이 이미 당신을 덮은 것처럼 보입니다. :) – domsson

답변

1

나는 String에 같이 IndexOf 마지막 .을 촬영 한 다음 두 개의 문자열을 조작하는 것입니다. 당신이 발견 예를 들어, 위의 하나의 파일 이름을

String saDateFiles = "2014.05-06.txt"; 
int lastDot = saDateFiles.lastIndexOf('.'); 
String strDatefiles = saDateFiles.substring(0, lastDot).replaceAll("\\D", "") 
     .concat(saDateFiles.substring(lastDot)); 
System.out.println(strDatefiles); 

출력 (요청에 따라)

20140506.txt 

했다. 파일 이름의 배열을 위해 작업을 수행하려면, 당신은 전에 파일 이름의 일부에 대체 기능을 신청하기 for-each 루프

String[] saDateFilesArr = fileList.list(); 
for (String saDateFiles : saDateFilesArr) { 
    int lastDot = saDateFiles.lastIndexOf('.'); 
    String strDatefiles = saDateFiles.substring(0, lastDot) 
      .replaceAll("\\D", "").concat(saDateFiles.substring(lastDot)); 
    System.out.println(strDatefiles); 
} 
+0

나는 너의 작업을 시도했지만 괜찮 으면 내 편집 된 게시물을 확인할 수있는 오류가 메신저? – user123040569

+0

하지만 하나 이상의 파일이 있다면 다른 파일을 대체 할 것입니까? 나는 그것을 시도하고'2014050220140904.log' 이것은'20140502'가 다른 파일 인 결과입니다 – user123040569

+0

실패로부터 저를 구 해주셔서 고맙습니다! – user123040569

0

같은 위의 코드를 사용할 수 있습니다 ".". 당신은 코드와 함께이 부분을 추출 할 수 있습니다 :

fileName.substring(0, fileName.lastIndexOf(".")) ; 

사용 :

String strDatefiles = Arrays.toString(saDateFiles.substring(0, saDateFiles.lastIndexOf("."))).replaceAll("[\\W]", ""); 
+0

'saDateFiles.lastIndexOf (".")))'오류가있어서'length'에서 변경해야합니까? 내 질문을 편집했습니다 – user123040569

+0

어떤 종류의 오류가 있습니까? –

+0

내 편집 된 게시물보기 오류 @DJAM Silvère Gatien을 게시했습니다. – user123040569

관련 문제