如何提取第二次出现的字符?

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

Demo.

您可以尝试这样的操作:

// 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]+", "");