2

我有字符串

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

我只想字符串album3。我怎样才能得到那个子字符串。

我正在使用substring through index. 是否有任何其他方式,因为专辑编号正在更改,因为它会像album9, album10.

4

7 回答 7

5

index您可以使用正则表达式,但在这种情况下使用似乎是最简单的:

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

如果违反格式假设,您可能需要进行一些错误检查。

于 2013-06-30T18:27:43.310 回答
2

尝试这个

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]);
          }
    }
}
于 2013-06-30T18:46:03.987 回答
1

使用Paths

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

如果您没有 Java 7,则必须求助于File

final String s = new File("/mnt/sdcard/Album/album3_137213136.jpg").getName();         
s.subString(0, s.indexOf('_'));
于 2013-06-30T18:28:03.043 回答
1

强制性正则表达式解决方案使用String.replaceAll

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

使用它:

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"
于 2013-06-30T18:47:05.913 回答
0

如何在java中计算String中的子字符串

在第 8 行,我们必须使用 for 循环另一个可选的 case 替换 for 循环,仅使用 while 循环,如while(true){。. .}

public class SubString {
    public static void main(String[] args) {
    int count = 0 ;
    
    String string = "hidaya: swap the Ga of Gates with the hidaya: of Bill to make Bites."
            + " The hidaya: of Bill will then be swapped hidaya: with the Ga of Gates to make Gall."
            + " The new hidaya: printed out would be Gall Bites";
    for (int i = 0; i < string.length(); i++) 
    {
        int found = string.indexOf("hidaya:", i);//System.out.println(found);
        if (found == -1) break;
        int start = found + 5;// start of actual name
        int end = string.indexOf(":", start);// System.out.println(end);
        String subString = string.substring(start, end); //System.out.println(subString);
        if(subString != null)
            count++;
        i = end + 1; //advance i to start the next iteration
    }
      System.out.println("In given String hidaya Occurred "+count+" time ");
      
    }

}
于 2015-03-03T05:24:22.677 回答
0

使用正则表达式匹配子字符串

path.matches(".*album[0-9]+.*")
于 2013-06-30T18:31:06.977 回答
0

尝试这个 ..

 String path =    /mnt/sdcard/Album/album3_137213136.jpg
    path = path.subString(path.lastIndexOf("/")+1,path.indexOf("_"));
    System.out.println(path);
于 2013-06-30T18:40:19.833 回答