从字符串行中删除 int。然后,将 int 放入变量中

Removing an int from a Line of String. Then, putting the int to a variable

提问人:user3103878 提问时间:12/15/2013 最后编辑:Taylan Aydinliuser3103878 更新时间:12/15/2013 访问量:254

问:

String team1=z.nextLine(), team2;

int num1, num2;

num1 = z.Int();
team1 = z.nextLine();
team1 = team1.replaceAll("[0-9]","");

System.out.println(team1 + " " + num1);

我需要扫描内容为“Alpha Beta Gamma 52”的文本文件。字符串“Alpha Beta Gamma”必须放在 team1 中,52 必须放在 num1 上。当我使用 .replaceAll 时,它会删除阻碍我使用整数的 52。

字符串 int java.util.scanner

评论


答:

0赞 Elliott Frisch 12/15/2013 #1

正如你所注意到的,一旦你从字符串中删除了这个值;该值不在 String 中。像这样的东西怎么样?

public static void main(String[] args) {
  String in = "Alpha Beta Gamma 52";
  String[] arr = in.split(" ");                // split the string by space.
  String end = arr[arr.length - 1];            // get the last "word"
  boolean isNumber = true;
  for (char c : end.trim().toCharArray()) {    // check if every character is a digit.
    if (!Character.isDigit(c)) {
      isNumber = false;                        // if not, it's not a number.
    }
  }
  Integer value = null;                        // the numeric value.
  if (isNumber) {
    value = Integer.valueOf(end.trim());
  }
  if (value != null) {
    in = in.substring(0, in.length()
        - (String.valueOf(value).length() + 1)); // get the length of the 
                                                 // numeric value (as a String).
  }
  // Display
  if (value != null) {
    System.out.printf("in = %s, value = %d", in, value);
  } else {
    System.out.println(in + " does not end in a number");
  }
}
0赞 Mik378 12/15/2013 #2
public static void main(String[] args) {

        String readLine = new Scanner(System.in).nextLine();

        String team1 = readLine.replaceAll("\\d", "");
        int team2 = Integer.parseInt(readLine.replaceAll("\\D", ""));

        System.out.println(team1); //Alpha Beta Gamma
        System.out.println(team2); //52    

}

评论

0赞 Justin 12/15/2013
对于第二个替换正则表达式,我建议使用 : 。这将删除所有非数字。\\DreplaceAll("\\D","")
0赞 Mik378 12/15/2013
我想保留它们,而不是删除它们
0赞 Justin 12/15/2013
我说的是第二个正则表达式。在那里,您只想保留数字。 匹配所有非数字,因此将返回仅包含数字的 a。为了扩展以包含一个符号,我的正则表达式如下:\DreadLine.replaceAll("\\D","");String-[^\d-]
0赞 Bohemian 12/15/2013 #3

在数字之前拆分,然后解析各个部分:

String[] parts = str.split(" (?=\\d)");
String team = parts[0];
int score = Integer.parseInt(parts[1]);