Java 从字符串中提取2个整数 String-wearm=“手枪”; 结果: int clip=1; int弹药=1;

Java 从字符串中提取2个整数 String-wearm=“手枪”; 结果: int clip=1; int弹药=1;,java,string,split,integer,substring,Java,String,Split,Integer,Substring,字符串的格式=(武器) 我需要弹夹和弹药值 那么我如何提取字符串的这两个值。 我可以用“/”来分割它,但它仍将面对:“枪” 提前感谢,然后将结果子串分别拆分为“”(10>)String-wearm=“pistol.”; String weapon = "pistol . <1/10>"; Result: int clip = 1; int ammo = 1; String str=武器.substring(武器.indexOf(“”);//str=“” int clip=Integ

字符串的格式=(武器)
我需要弹夹和弹药值

那么我如何提取字符串的这两个值。 我可以用“/”来分割它,但它仍将面对:“枪”

提前感谢

,然后将结果子串分别拆分为“”(10>)

String-wearm=“pistol.”;
String weapon = "pistol . <1/10>";
Result:
int clip = 1;
int ammo = 1;
String str=武器.substring(武器.indexOf(“”);//str=“” int clip=Integer.parseInt(str.substring(0,str.indexOf(“/”));//clip=1 int ammo=Integer.parseInt(str.substring(str.indexOf(“/”)+1));//弹药=10
clip=1

弹药=10


完成..

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

String weapon = "pistol . <1/10>";

String str = weapon.substring(weapon.indexOf("<")+1,weapon.indexOf(">")); // str = "<1/10>"

int clip = Integer.parseInt(str.substring(0,str.indexOf("/"))); // clip = 1

int ammo = Integer.parseInt(str.substring(str.indexOf("/")+1)); // ammo = 10

你也可以试试这个

从字符串中提取武器、剪辑和弹药的值”(武器)。“

String str=“(武器)。”;
Pattern=Pattern.compile(“\\(.*?\\)”;
Matcher-Matcher=pattern.Matcher(str);
while(matcher.find()){
系统输出println(匹配器组(1));
}
从字符串“pistol”中提取值1和10:

String str = "(WEAPON) . <(CLIP)/(AMMO)>";
Pattern pattern = Pattern.compile("\\((.*?)\\)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
   System.out.println(matcher.group(1));
}
List number=new ArrayList();
String str=“手枪。”;
Pattern=Pattern.compile(“\\”);
Matcher-Matcher=pattern.Matcher(str);
while(matcher.find()){
添加(匹配器组(1).split(“/”);
}

您可以尝试这样的方法

List<String[]> numbers = new ArrayList<String[]>();
String str = "pistol . <1/10>";
Pattern pattern = Pattern.compile("\\<(.*?)\\>");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
   numbers.add(matcher.group(1).split("/"));
}
String-wearm=“手枪”;
模式p=模式。编译(\\d+);
匹配器m=p匹配器(武器);
列表编号=新的ArrayList();
while(m.find()){
add(Integer.parseInt(m.group());
}
System.out.println(“CLIP:+numbers.get(0));
System.out.println(“弹药:+numbers.get(1));

,int)谢谢,有可能获得武器名称吗?(所以我得到了2个整数和1个字符串)@user1621988,使用第二种方法,类似于:
Pattern p=Pattern.compile(\\b(\\w+)\\b.*)将起作用。武器将是
m.group(1)
,弹夹将是
m.group(2)
和弹药
m.group(3)
String str = "(WEAPON) . <(CLIP)/(AMMO)>";
Pattern pattern = Pattern.compile("\\((.*?)\\)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
   System.out.println(matcher.group(1));
}
List<String[]> numbers = new ArrayList<String[]>();
String str = "pistol . <1/10>";
Pattern pattern = Pattern.compile("\\<(.*?)\\>");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
   numbers.add(matcher.group(1).split("/"));
}
public static void main(String[] args) {
    String weapon = "pistol . <1/10>";
    String test = "";

    Pattern pattern = Pattern.compile("<.*?>");
    Matcher matcher = pattern.matcher(weapon);

    if (matcher.find())
        test = matcher.group(0);

    test = test.replace("<", "").replace(">", "");
    String[] result = test.split("/");

    int clip = Integer.parseInt(result[0]);
    int ammo = Integer.parseInt(result[1]);
    System.out.println("Clip value is -->" + clip + "\n"
            + "Ammo value is -->" + ammo);
}
Clip value is -->1
Ammo value is -->10
String weapon = "pistol . <1/10>";
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(weapon); 
List<Integer> numbers = new ArrayList<Integer>();
while (m.find()) {
    numbers.add(Integer.parseInt(m.group()));
}
System.out.println("CLIP: " + numbers.get(0));
System.out.println("AMMO: " + numbers.get(1));