#java
Вопрос:
У меня есть веревочка
"target/abcd12345671.csv"
и мне нужно извлечь
"abcd12345671"
из строки с использованием Java. Может ли кто-нибудь предложить мне чистый способ извлечь это.
Комментарии:
1. разделиться на
/
и.
!?
Ответ №1:
Ядро Java
String fileName = Paths.get("target/abcd12345671.csv").getFileName().toString();
fileName = filename.replaceFirst("[.][^.] $", "")
Использование общего доступа apache
import org.apache.commons.io.FilenameUtils;
String fileName = Paths.get("target/abcd12345671.csv").getFileName().toString();
String fileNameWithoutExt = FilenameUtils.getBaseName(fileName);
Ответ №2:
Мне нравится подход замены регулярных выражений здесь:
String filename = "target/abcd12345671.csv";
String output = filename.replaceAll("^.*/|\..*$", "");
System.out.println(output); // abcd12345671
Здесь мы используем чередование регулярных выражений, чтобы удалить все содержимое, включая последнюю косую черту, а также все содержимое от точки в расширении до конца имени файла. Это оставляет после себя контент, который вам действительно нужен.
Ответ №3:
Вот подход с использованием регулярного выражения
String filename = "target/abcd12345671.csv";
var pattern = Pattern.compile("target/(.*).csv");
var matcher = pattern.matcher(filename);
if (matcher.find()) {
// Whole matched expression -> "target/abcd12345671.csv"
System.out.println(matcher.group(0));
// Matched in the first group -> in regex it is the (.*) expression
System.out.println(matcher.group(1));
}