如何在下面的示例中使用函数编写双函数:
public static void main(String[] args) {
BiFunction<String, Integer, String> zeroPadding = (string, zeros) -> String.format("%0" +zeros+ "d", Integer.valueOf(string));
Function<String, String> removeNonDigitChars = (string) -> string.replaceAll("\\D", "");
}
首先,我想删除非数字字符,并将removeNonDigitChars结果传递给带参数的零度量BiFunction。
我试过了:
zeroPadding.andThen(removeNonDigitChars).apply("789.65", 8);
和
removeNonDigitChars.compose(zeroPadding).apply("789.65", 8);
但两者都不起作用。
答案 0 :(得分:0)
您的两次尝试都是以错误的顺序应用这些功能。您希望在之前将removeNonDigitChars
应用于字符串,并将字符串提供给zeroPadding
。
很遗憾,您无法使用andThen()
或compose()
来合并这两个功能。
如果你想要一个组合功能,只需自己组合:
BiFunction<String, Integer, String> combined = (string, zeros) ->
zeroPadding.apply(removeNonDigitChars.apply(string), zeros);
然后像这样使用:
combined.apply("789.65", 8) // returns "00078965"