2017-04-07 25 views
1

我試圖將file轉換爲String,之後我將替換轉換後的文件的名稱,但不包含非數字字符,但當我將其替換爲文件時文件的擴展名也被替換。例如(2014.05-06.txt->20140506.txt但發生了什麼是20140506txt)我想保留.txt,.log或任何類型的擴展名。刪除文件名中的非數字字符,但擴展名爲java

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(我有2個文件內)

+1

選項#1)分裂出去的延伸第一,再次運行正則表達式,在擴展策略。選項#2)修復你的正則表達式。選項#3)如果正則表達式超出了你的想法(對我來說這是真的),只需使用不同的方法進行替換(循環?) – domsson

+0

@domdom我是新的Java btw,你能解釋更多關於流程? – user123040569

+0

看起來像其他人已經覆蓋你。 :) – domsson

回答

1

我將採取的indexOf最後.String,然後操縱兩子。例如,

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

但如果有超過1個文件,這將取代其他?我試過了,'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(「。」)))'有錯誤,需要改變'長度'?我編輯了我的問題 – user123040569

+0

哪種錯誤? –

+0

看看我編輯的帖子我發佈了錯誤@DJAMSilvèreGatien – user123040569