有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java从字符串中获取整数

假设我有这样一个字符串:

课堂:课堂作业。平方坐标:314Y坐标:50

如何从中提取两个数字(即314和50)


共 (4) 个答案

  1. # 1 楼答案

    使用正则表达式:

    String s = "Class:class shapes_assignment.SquareX-Coordinate:314Y-Coordinate:50";
      Pattern pat = Pattern.compile("(\\d)+");
      Matcher mat = pat.matcher(s);
    
      while(mat.find()){
    
       System.out.println(mat.group()); // You can store these numbers in variables
    }
    

    您可以使用以下代码转换和存储数字:

    ArrayList<Integer> numbers = new ArrayList<Integer>();
    
    while(mat.find()){
    
        System.out.println(mat.group());
    
        numbers.add(Integer.parseInt(mat.group()));  
    }
    
  2. # 2 楼答案

    你可以使用Matcher.matches()

    String str = "Class:class shapes_assignment.SquareX-Coordinate:314Y-Coordinate:50";
    Matcher m = Pattern.compile(".*?(\\d+).*?(\\d+).*").matcher(str);
    if (m.matches()) {
       System.out.println(m.group(1));
       System.out.println(m.group(2));
    }
    

    输出:

    314
    50
    
  3. # 3 楼答案

    迭代字符串的每个字符。如果字符匹配0-9,则将其添加到新字符串foo中。当字符不是连续顺序的数字时,停止向该字符串添加字符

    完成后,将字符串foo转换为整数

    我希望这有帮助

  4. # 4 楼答案

    您可以在非数字字符上拆分字符串:

    String s = "Class:class shapes_assignment.SquareX-Coordinate:314Y-Coordinate:50"; 
    String[] numbers = s.split("[^\\d]+");
    

    请注意,如果输入以非数字字符开头,则第一个元素将是空字符串

    然后可以用Integer.parseInt()解析数组中的每个非空字符串

    完整工作代码:

    public static void main(String[] args) {
        String s = "Class:class shapes_assignment.SquareX-Coordinate:314Y-Coordinate:50";
        String[] numbers = s.split("[^\\d]+");
        for (String number : numbers) {
            if (!number.isEmpty()) {
                int i = Integer.parseInt(number);
                System.out.println("i = " + i);
            }
        }
    }