如何从此
中提取'1358751074-6824'http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg
并且还需要从此
中提取'13587510746824'http://api.discogs.com/images/R-1169056-13587510746824.jpeg
所以我认为我可以通过从'最后一个路径组件的第二个到最后一个点'进行子串,但是如何计算第二个 -
答案 0 :(得分:2)
根据字符串允许的变化,您可以执行以下操作:
String extract = s.replaceAll(".*?-.*?-([\\d-]+).*", "$1");
.*?-
跳过第一个连字符.*?-
跳过第二个连字符([\\d-]+)
是您要保留的部分:数字和连字符.*
跳过字符串的其余部分答案 1 :(得分:0)
你可以在没有正则表达式的情况下计算出第二个破折号的位置 - 找到第一个破折号的位置,并从那里开始工作:
int pos = str.indexOf('-', str.indexOf('-')+1);
答案 2 :(得分:0)
您可以尝试这样的事情:
// Your original String
String str = "http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg";
// identify the one-before-last-dash
int i=str.lastIndexOf("-", str.lastIndexOf("-")-1);
// Extract the value you want
String newStr = str.substring(i+1, str.lastIndexOf("."));
// Return numeric value only
String strNums = newStr.replaceAll("[^?0-9]+", "");