Java get Substring value from String

13,304

Solution 1

Obligatory regex solution using String.replaceAll:

String album = path.replaceAll(".*(album\\d+)_.*", "$1");

Use of it:

String path = "/mnt/sdcard/Album/album3_137213136.jpg";
String album = path.replaceAll(".*(album\\d+)_.*", "$1");
System.out.println(album); // prints "album3"
path = "/mnt/sdcard/Album/album21_137213136.jpg";
album = path.replaceAll(".*(album\\d+)_.*", "$1");
System.out.println(album); // prints "album21"

Solution 2

You can use a regular expression, but it seems like using index is the simplest in this case:

int start = path.lastIndexOf('/') + 1;
int end = path.lastIndexOf('_');
String album = path.substring(start, end);

You might want to throw in some error checking in case the formatting assumptions are violated.

Solution 3

Try this

public static void main(String args[]) {
    String path =   "/mnt/sdcard/Album/album3_137213136.jpg";
    String[] subString=path.split("/");
    for(String i:subString){
          if(i.contains("album")){
              System.out.println(i.split("_")[0]);
          }
    }
}

Solution 4

Using Paths:

final String s = Paths.get("/mnt/sdcard/Album/album3_137213136.jpg")
    .getFileName().toString();
s.subString(0, s.indexOf('_'));

If you don't have Java 7, you have to resort to File:

final String s = new File("/mnt/sdcard/Album/album3_137213136.jpg").getName();         
s.subString(0, s.indexOf('_'));
Share:
13,304
NovusMobile
Author by

NovusMobile

Updated on June 04, 2022

Comments

  • NovusMobile
    NovusMobile almost 2 years

    I have string

     String path =    /mnt/sdcard/Album/album3_137213136.jpg
    

    I want to only strings album3. How can I get that substring.

    I am using substring through index. Is there any other way because album number is getting changed because it will fail in like album9, album10.