Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串中提取整数并在Java中添加它们_Java_Arrays_Arraylist - Fatal编程技术网

从字符串中提取整数并在Java中添加它们

从字符串中提取整数并在Java中添加它们,java,arrays,arraylist,Java,Arrays,Arraylist,我想从字符串中提取整数并将其相加 例: 我应该将它的整数输出为825(即34+789+2=825)这里有一种方法,使用String.split: public static void main(String[] args) { String s="ab34yuj789km2"; int total = 0; for(String numString : s.split("[^0-9]+")) { if(!numString.isEmpty()) {

我想从字符串中提取整数并将其相加

例:


我应该将它的整数输出为825(即34+789+2=825)

这里有一种方法,使用String.split:

public static void main(String[] args) {
    String s="ab34yuj789km2";
    int total = 0;
    for(String numString : s.split("[^0-9]+")) {
        if(!numString.isEmpty()) {
            total += Integer.parseInt(numString);
        }
    }
    // Print the result
    System.out.println("Total = " + total);
}

注意模式
“[^0-9]+”
是一个正则表达式。它匹配一个或多个非十进制数字的字符。十进制数字还有一种模式
\d

您可以使用正则表达式从字符串中提取数字

    Pattern pattern = Pattern.compile("\\d+");
    Matcher matcher = pattern.matcher("ab34yuj789km2");
    Integer sum = 0;
    while(matcher.find()) {
       sum += Integer.parseInt(matcher.group());
    }
使用Java 8:

String str = "ab34yuj789km2";
int sum = Arrays.stream(str.split("\\D+"))
    .filter(s -> !s.isEmpty())
    .mapToInt(s -> Integer.parseInt(s))
    .sum();

javasript
!=
java
@Guy我推荐这个答案:在你链接的问题中,这个答案是公认的。@Fildor我也是,但这取决于OP。它起作用了@帕特里克听到这个消息很高兴@pb_!请别忘了标记一个被接受的答案。这同样适用于@Anh Pham
String str = "ab34yuj789km2";
int sum = Arrays.stream(str.split("\\D+"))
    .filter(s -> !s.isEmpty())
    .mapToInt(s -> Integer.parseInt(s))
    .sum();