从String中提取2个整数

use*_*988 3 java string integer split substring

String weapon = "pistol . <1/10>";
Result:
int clip = 1;
int ammo = 1;
Run Code Online (Sandbox Code Playgroud)

string =(WEAPON)的格式.<(CLIP)/(AMMO)>
我需要Clip和Ammo值.

那么我如何才能提取String的这两个值.我可以用"/"拆分它仍然会面对:"枪<1"和"10>"
提前感谢

ass*_*ias 7

您可以删除非数字字符,如下所示:

String s = "pistol . <1/10>";
String[] numbers = s.replaceAll("^\\D+","").split("\\D+");
Run Code Online (Sandbox Code Playgroud)

现在numbers[0]1numbers[1]10.

  • s.replaceAll("^\\D+","") 删除字符串开头的非数字字符,因此现在是新字符串 "1/10>"
  • .split("\\D+")分割非数字字符(在这种情况下/>),并忽略尾随空字符串如果任何

或者,如果格式始终与您在问题中提到的完全一致,则可以查找该特定模式:

private final static Pattern CLIP_AMMO = Pattern.compile(".*<(\\d+)/(\\d+)>.*");

String s = "pistol . <1/10>";
Matcher m = CLIP_AMMO.matcher(s);
if (m.matches()) {
    String clip = m.group(1); //1
    String ammo = m.group(2); //10
}
Run Code Online (Sandbox Code Playgroud)