如何提取第二次出现的字符?
How do I extract the second occurence of a character?
如何从中提取“1358751074-6824”
http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg
它还需要从中提取'13587510746824'
http://api.discogs.com/images/R-1169056-13587510746824.jpeg
所以我想我可以通过从 'second - of the last path component up to the final dot' 中提取子字符串来做到这一点,但是我如何计算出 second -
根据允许的字符串变体,您可以执行以下操作:
String extract = s.replaceAll(".*?-.*?-([\d-]+).*", "");
.*?-
跳过第一个连字符之前的所有内容
.*?-
跳过第二个连字符之前的所有内容
([\d-]+)
是您要保留的部分:数字和连字符
.*
跳过字符串的其余部分
您可以不用正则表达式计算出第二个破折号的位置 - 通过找到第一个破折号的位置,然后从那里开始计算:
int pos = str.indexOf('-', str.indexOf('-')+1);
您可以尝试这样的操作:
// 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]+", "");
如何从中提取“1358751074-6824”
http://api.discogs.com/images/R-1169056-1358751074-6824.jpeg
它还需要从中提取'13587510746824'
http://api.discogs.com/images/R-1169056-13587510746824.jpeg
所以我想我可以通过从 'second - of the last path component up to the final dot' 中提取子字符串来做到这一点,但是我如何计算出 second -
根据允许的字符串变体,您可以执行以下操作:
String extract = s.replaceAll(".*?-.*?-([\d-]+).*", "");
.*?-
跳过第一个连字符之前的所有内容.*?-
跳过第二个连字符之前的所有内容([\d-]+)
是您要保留的部分:数字和连字符.*
跳过字符串的其余部分
您可以不用正则表达式计算出第二个破折号的位置 - 通过找到第一个破折号的位置,然后从那里开始计算:
int pos = str.indexOf('-', str.indexOf('-')+1);
您可以尝试这样的操作:
// 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]+", "");