3 回答

TA貢獻1795條經驗 獲得超7個贊
我無法閱讀這些正則表達式,它們對于普通人來說太復雜了。
為什么要使用復雜的正則表達式,其他開發人員很難閱讀。如果我必須調試該代碼,我會討厭它。
我覺得像下面這樣的東西會更具可讀性,并且也會減少錯誤的機會,并且易于調試:
public double sumFile(String filename) {
try (Stream<String> linesStream = Files.lines(Paths.get(filename))) {
return linesStream.mapToDouble(this::sumLine).sum();
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
private double sumLine(String line) {
return Arrays.stream(line.split(","))
.filter(e -> e.split("\\.").length <= 2)
.mapToDouble(Double::parseDouble)
.sum();
}

TA貢獻1155條經驗 獲得超0個贊
錯誤數字的子串實際上有效的問題?!?.2.3”應該被忽略,但如果您只是盲目地尋找有效數字,那么這個數字可能包含“1.2”或“2.3”作為有效數字。
有兩種方法可以避免這種情況:
用已知的分隔符“,”分割該行,并驗證每個部分是否有效或
搜索有效和無效的號碼并丟棄無效的號碼。
為此,您可以使用正則表達式
-?\d+\.?\d*(\.d*)?
,并在匹配組非空時丟棄結果。
添加回答
舉報