如何在字符串中查找最后一个字母表,它是java中数字和字符的组合

时间:2013-10-01 13:12:35

标签: java

我有以下字符串我希望spilts字符串基于字符串中的最后一个字母 例如考虑

 String str =  '02191204E8DA4459.jpg' how to extract 4459 from str ? 

我尝试使用代码,但是在上面的字符串字母不是常量 actullally我想在数据库中添加图像序列,例如

'02191204E8DA4459.jpg' to '02191204E8DA4465.jpg' i.e 6 images

  String sec1 = null, sec2 = null, result = null, initfilename = null;
    int lowerlimit, upperlimit;
    String realimg1, realimg2;
    String str1 = "120550DA121.jpg"; // here  DA is constant 
    String str2 = "120550DA130.jpg"; //
    String[] parts1;
    String[] parts2;
    realimg1 = str1.substring(0, str1.length() - 4); // remove .jpg from image name
    realimg2 = str2.substring(0, str2.length() - 4); //
    if (realimg1.matches(".*[a-zA-Z]+.*")) {             // checking whether imagename has alphabets 
        parts1 = realimg1.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"); // It matches positions between a number and not-a-number (in any order).
        parts2 = realimg2.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"); // It matches positions between a number and not-a-number (in any order).

        sec1 = parts1[0];
        sec2 = parts1[1];

        result = sec1.concat(sec2);

        lowerlimit = Integer.parseInt(parts1[parts1.length - 1]);
        upperlimit = Integer.parseInt(parts2[parts2.length - 1]);

        for (int j = lowerlimit; j <= upperlimit; j++) {
            initfilename = result + j + ".jpg";
            System.out.println(initfilename);
        }
    } else {
        for (int j = Integer.parseInt(realimg1); j <= Integer.parseInt(realimg2); j++) {
            initfilename = j + ".jpg";
            System.out.println(initfilename);
        }
    }

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

String str =  "02191204E8DA4459.jpg";
if(str.matches(".*\\d{4}\\.jpg")) {
    System.out.println(str.replaceAll(".*(\\d{4})\\.jpg", "$1"));
}
    如果字符串以4位数字结尾且,则
  • str.matches(".*\\d{4}\\.jpg")会返回true
  • str.replaceAll(".*(\\d{4})\\.jpg", "$1")返回一个新字符串,其中包含您要查找的4位数字

如果你不知道你将拥有多少位数,你可以用这个替换你的正则表达式:

.*(\\d+)\\.jpg

答案 1 :(得分:1)

您可以拆分非数字并提取结果数组的最后一个元素:

String str = "02191204E8DA4459.jpg";

String[] split = str.split("\\D+");
System.out.println(split[split.length - 1]);
4459

答案 2 :(得分:1)

也许不是最干净的方式,因为它不适用于前面没有非数字的字符串:

String str = "02191204E8DA4459.jpg";
String lastNumber = str.replaceAll("^.*[^0-9](\\d+).*?$", "$1");
System.out.println(lastNumber);