我有字符串
String path = /mnt/sdcard/Album/album3_137213136.jpg
我只想要字符串album3
。
我怎样才能得到那个子串。
我正在使用substring through index.
还有其他方法,因为专辑号码会发生变化,因为它会像album9, album10
一样失败。
答案 0 :(得分:5)
您可以使用正则表达式,但在这种情况下使用index
似乎最简单:
int start = path.lastIndexOf('/') + 1;
int end = path.lastIndexOf('_');
String album = path.substring(start, end);
如果违反格式设置假设,您可能需要进行一些错误检查。
答案 1 :(得分: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]);
}
}
}
答案 2 :(得分: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('_'));
答案 3 :(得分:1)
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"
答案 4 :(得分:0)
使用正则表达式匹配子字符串
path.matches(".*album[0-9]+.*")
答案 5 :(得分:0)
试试这个..
String path = /mnt/sdcard/Album/album3_137213136.jpg
path = path.subString(path.lastIndexOf("/")+1,path.indexOf("_"));
System.out.println(path);
答案 6 :(得分:0)
在第8行,我们必须使用循环 另一个可选的情况是使用while循环替换for循环,如 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 ");
}
}