package com.javaprograms;import java.util.Arrays;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Remove_Elements_From_String { public static void main(String[] args) { String str = "Test123 is12 good123"; int total = 0; Pattern p = Pattern.compile("[a-zA-Z]"); String[] m = p.split(str); for (String s : m) { System.out.println(s.toString()); int num = Integer.parseInt(s); total = total + num; } System.out.println("Total of above string is:" + total); }}我正在寻找类似的输出,123+12+123=258但它也正在打印空白。如何使用正则表达式忽略该空白。任何帮助,将不胜感激。我知道我们可以在正则表达式中使用“和”运算符,但不知道如何使用新的正则表达式
3 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
只需回答“或”问题,您只需使用a |
,然后您的模式将变为:
Pattern.compile("([a-z]|[A-Z])+")
是该+
值的1-n倍。
这里的问题是您的第一个String将为空,因为它将找到模式,因此它将拆分,但是模式的左侧为空。
按照YCF_L建议的方式进行操作绝对是必经之路,因为您要查找的是数字,而不是其余的数字。通常,您应该始终将模式应用于所需的内容,否则最终将Universe排除在外而只是获得一组10个数字。
守候你守候我
TA贡献1802条经验 获得超10个赞
“使用拆分并检查是否为空”的一种变体是使用流和filter。
public class RegexNumOnly {
public static void main( String[] args ) {
String test = "Test123 is12 good443";
String[] tokens = test.split( "[a-zA-Z\\s]+" );
System.out.println( Arrays.toString( tokens ) );
System.out.println( Arrays.stream( tokens ).filter( s -> !s.isEmpty() )
.mapToInt( Integer::parseInt ).sum() );
}
}
我喜欢YCFmatcher().results()制作视频流,但我不知道Matcher会这样做。
添加回答
举报
0/150
提交
取消