私は文字列を持っています
String path = /mnt/sdcard/Album/album3_137213136.jpg
文字列だけにしたいalbum3
。その部分文字列を取得するにはどうすればよいですか。
私が使ってsubstring through index.
いるのは のように失敗するのでアルバム番号が変わってしまうので他に方法はありませんかalbum9, album10
。
正規表現を使用できますがindex
、この場合は使用するのが最も簡単なようです:
int start = path.lastIndexOf('/') + 1;
int end = path.lastIndexOf('_');
String album = path.substring(start, end);
フォーマットの仮定に違反した場合に備えて、いくつかのエラー チェックを投入することをお勧めします。
これを試して
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]);
}
}
}
を使用した必須の正規表現ソリューション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"
これを試して ..
String path = /mnt/sdcard/Album/album3_137213136.jpg
path = path.subString(path.lastIndexOf("/")+1,path.indexOf("_"));
System.out.println(path);