如何在java中仅从字符串中提取数字?

如何在java中仅从字符串中提取数字?,java,extract,Java,Extract,假设我有一个字符串,包含:hello 14:12 现在我只想提取数字,在两个变量中有两个独立的值,如下所示:first_num value应该是int,即first_num=14,第二个变量应该在冒号后面存储数字:即second_num=12。ReplaceAll是最好的解决方案 String str = "hello 14:12"; str = str.replaceAll("[^0-9]+", " "); System.out.println(Arrays.asList(str.trim()

假设我有一个字符串,包含:hello 14:12


现在我只想提取数字,在两个变量中有两个独立的值,如下所示:first_num value应该是int,即first_num=14,第二个变量应该在冒号后面存储数字:即second_num=12。

ReplaceAll是最好的解决方案

String str = "hello 14:12";
str = str.replaceAll("[^0-9]+", " ");
System.out.println(Arrays.asList(str.trim().split(" ")));

这样,您只能获得数组中的数字。

ReplaceAll是最佳解决方案

String str = "hello 14:12";
str = str.replaceAll("[^0-9]+", " ");
System.out.println(Arrays.asList(str.trim().split(" ")));

通过这种方式,您只能获得数组中的数字。

您可以使用正则表达式来解决此问题

public static List<Integer> extractNumbers(String s){       
        List<Integer> numbers = new ArrayList<Integer>();

        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher(s);

        while(m.find()){
            numbers.add(Integer.parseInt(m.group()));
        }       
        return numbers;     
    }

您可以使用正则表达式来解决这个问题

public static List<Integer> extractNumbers(String s){       
        List<Integer> numbers = new ArrayList<Integer>();

        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher(s);

        while(m.find()){
            numbers.add(Integer.parseInt(m.group()));
        }       
        return numbers;     
    }