我正在編寫一個小程序,修剪文件名中某個字符後面的所有內容。這個字符是由用戶指定的,我希望我的部分正則表達式能夠適應這一點。我的計劃是在正則表達式查詢中使用佔位符,但我遇到了一些麻煩,無法找到有關它的更多信息。 這是我到目前爲止的代碼:Java:在正則表達式查詢中使用佔位符
//get all files (variablepath is a String passed to the method, so is altSep)
File dir = new File(path);
File[] listOfFiles = dir.listFiles();
String regex = "[\\%s\\(\\)]+[\\w\\s]+";
regex = String.format(regex, altSep);
for (File i : listOfFiles) {
String currName = i.getName();
String newName = currName.replaceAll(regex, "");
newName = path + '\\' + newName;
File newFile = new File(newName);
i.renameTo(newFile);
}
是的,它的工作原理也刪除後方的空間的一切。我還擔心%s可能與用戶可能輸入的其他字符相匹配。在正則表達式中使用佔位符是一個好主意? (並且我還在學習Java,所以你可能會發現其他一些可以更容易解決的問題)
Sidenotes:該字符本身也必須被刪除,因爲這涉及到文件名,所以擴展必須保持完整。
爲什麼不'String newName = currName.substring(0,currName.indexOf(character)+1)'? – Grogi
@Grogi注意到,如果Java版本<1.7,子字符串可能有內存泄漏問題 – Kent
@Grogi我意識到我沒有足夠詳細描述這個問題。你的解決方案很好,但我也需要擺脫給定的角色本身。我編輯了我的問題。 – Iarwain