如何在字符串中查找最后一个字母表,它是java中数字和字符的组合(how to find last alphabet in string which is combination of number and character in java)

我有以下字符串我想基于字符串中的最后一个字母表来spilts字符串,例如考虑

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

我尝试下面的代码,但但在上面的字符串字母表不是常量actullally我想在数据库中添加图像sequeunce为例如

'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); } }

I have the following string I want to spilts string based on last alphabets in string for e.g consider

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

i try following code but that but in above string alphabets are not constant actullally i want to add images sequeunce in database for e.g

'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); } }

最满意答案

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

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

Maybe not the cleanest way, since it wouldn't work for strings not preceded by non-digits:

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

更多推荐