简体   繁体   中英

Split a string in java based on custom logic

I have a string

"target/abcd12345671.csv"

and I need to extract

"abcd12345671"

from the string using Java. Can anyone suggest me a clean way to extract this.

Core Java

String fileName = Paths.get("target/abcd12345671.csv").getFileName().toString();
fileName = filename.replaceFirst("[.][^.]+$", "")

Using apache commons

import org.apache.commons.io.FilenameUtils;
String fileName = Paths.get("target/abcd12345671.csv").getFileName().toString();
String fileNameWithoutExt = FilenameUtils.getBaseName(fileName);

I like a regex replace approach here:

String filename = "target/abcd12345671.csv";
String output = filename.replaceAll("^.*/|\\..*$", "");
System.out.println(output);  // abcd12345671

Here we use a regex alternation to remove all content up, and including, the final forward slash, as well as all content from the dot in the extension to the end of the filename. This leaves behind the content you actually want.

Here is an approach with using regex

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));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM