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

を使用した必須の正規表現ソリューション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

これを試して ..

 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 に答える