首页 > 解决方案 > 试图在有空格的字母数字字符串中找到所有数字的总和(即“my12 23name 14 is bijay”)

问题描述

我尝试过:

public class FindSumOfNumbersInString {

    public static void main(String[] args) {
        
        FindSumOfNumbersInString sum= new FindSumOfNumbersInString();
        
        sum.getNumerics("my12 23name 14 is bijay");
    }
    
    //"my12 23name 14 is bijay"
    
    public void getNumerics(String S) {
        String [] a= S.split(" ");
        int sum=0;
        for(int i=0;i<a.length;i++) {
            String str=a[i].replaceAll("^0-9","");
             sum=sum+Integer.parseInt(str);
            
        }System.out.println(sum);
        
    }

标签: javaregexstring

解决方案


您可以在循环外将其拆分,而不是在循环内拆分字符串。我还建议您[^0-9\s]用空白替换。模式,[^0-9\s]意味着非数字或空白。请注意使用[ ]which 用于创建字符类,并且+在一个模式用于一次或多次出现之后。

演示:

public class Main {
    public static void main(String[] args) {
        System.out.println(getSumOfNumbers("my12 23name 14 is bijay"));
    }

    static int getSumOfNumbers(String str) {
        String[] a = str.replaceAll("[^0-9\\s]", "").split("\\s+");
        int sum = 0;
        for (int i = 0; i < a.length; i++)
            sum = sum + Integer.parseInt(a[i]);
        return sum;
    }
}

输出:

49

推荐阅读