Java从String获取Substring值

时间:2013-06-30 18:26:02

标签: java string split substring

我有字符串

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

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

我正在使用substring through index. 还有其他方法,因为专辑号码会发生变化,因为它会像album9, album10一样失败。

7 个答案:

答案 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.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"

答案 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)

如何计算java

中String中的子字符串
  

在第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 ");

    }

}