我試過:
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);
}
uj5u.com熱心網友回復:
尋找匹配整數的字串可能會更好\d ,然后匹配中不包含空字串:
public static void getNumerics(String s) {
Matcher m = Pattern.compile("\\d ").matcher(s);
int sum = 0;
while (m.find()) {
sum = Integer.parseInt(m.group(0));
}
System.out.println(sum);
}
使用 Stream API 的類似版本Matcher::results:
public static void getNumericsStream(String s) {
int sum = Pattern.compile("\\d ").matcher(s)
.results()
.map(MatchResult::group)
.mapToInt(Integer::parseInt)
.sum();
System.out.println(sum);
}
或Scanner::findAll:
public static void getNumericsScanner(String s) {
int sum = new Scanner(s)
.findAll("\\d ")
.map(MatchResult::group)
.mapToInt(Integer::parseInt)
.sum();
System.out.println(sum);
}
此外,輸入字串可能被非數字字符分割,\D 空字串應該被過濾掉:
public static void getNumericsSplit(String s) {
int sum = Arrays.stream(s.split("\\D "))
.filter(x -> !x.isEmpty())
.mapToInt(Integer::parseInt)
.sum();
System.out.println(sum);
}
所有這些方法列印49輸入"my12 23name 14 is bijay":
getNumerics("my12 23name 14 is bijay"); // 49
getNumericsStream("my12 23name 14 is bijay"); // 49
getNumericsScanner("my12 23name 14 is bijay");// 49
getNumericsSplit("my12 23name 14 is bijay"); // 49
uj5u.com熱心網友回復:
您可以在回圈外拆分字串,而不是在回圈內拆分字串。我還建議您[^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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/317348.html
上一篇:使用正則運算式提取子字串
