我可以提取不。从字符串到整数的2位数?

时间:2016-11-24 01:19:45

标签: java

在我的情况下,用户可以输入

f 0 ,f 1, f 2//1 digit
p 0, p 1 ,p 2//1 digit
j 0 1, j 0 2, j 1 0....(any combination of 0,1,2) //2 digits
q ,Q //for quit

我用

      str = scanner.nextLine();//get the whole line of input
 if(str.matches("[fpjq]\\s[012]"))......//check vaild input
             char1=str .charAt(0);//get the first letter

然后我想现在得到下一个数字。

任何字符串方法都可以将字符串中的下一个数字提取为Int格式?

但是,我的方法仍然存在一些错误。例如,它可以退出QQ或qq或q +任何字母的程序

可以提供更好的方法吗?

修改

例如p 0 1    char1 = str .charAt(0); //得到p 现在我想获得0和1并存储到int

2 个答案:

答案 0 :(得分:2)

您可以在正则表达式中使用capturing groups (...)来提取匹配数据的部分内容:

str = scanner.nextLine();
Pattern regex = Pattern.compile("^([fpjq])(?:\\s+([012]))?(?:\\s+([012]))?$");
Matcher matcher = regex.matcher(str.trim());
if (matcher.find()) {
    String letter = matcher.group(1);
    String digit1 = matcher.group(2); // null if none
    String digit2 = matcher.group(3); // null if none
    // use Integer.parseInt to convert to int...
} else {
    // invalid input
}

答案 1 :(得分:0)

我会分开空格。

String input = "j 0 1";
String[] parts = input.split(" ");

String command = parts[0];
int arg1 = Integer.parseInt(parts[1]);
int arg2 = Integer.parseInt(parts[2]);