java - 试图在有空格的字母数字字符串中找到所有数字的总和(即“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);
}
解决方案
您可以在循环外将其拆分,而不是在循环内拆分字符串。我还建议您[^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
推荐阅读
- php - 随机替换字符串中的单词
- c++ - 在什么情况下 C++11 = 默认构造函数与不带参数和空主体的构造函数不同?
- roblox - workspace.Tool.Handle.Script6:无效参数#3(需要 Vector3,得到实例)
- android - Android 的 CameraX/Camera2 可以同时处理 2 个预览或/和 2 个记录吗?
- c# - 如何从 Microsoft.Extensions.Configuration.IConfiguration 读取动态对象
- asp.net-mvc - 你如何在 asp.net core mvc 中设置动态路由
- javascript - 在 Laravel 8 中使用堆栈
- reactjs - 如何在 React 前端使用 Spring Boot CAS 身份验证
- javascript - 无法从 React Native 中的 Firebase 实时数据库读取数据
- python - 如何从字典数组创建一组字典键