I have created simple for loop based solution to append dash(-) on every third digit.
private String appendedDashOnEachThirdDigit(String digitString) {
char digits[] = digitString.toCharArray();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < digits.length; i++) {
char ch = digits[i];
builder.append(ch);
if ((i + 1) % 3 == 0 && i - 1 != digits.length) {
builder.append('-');
}
}
return builder.toString();
}
Now I want to create equivalent java 8 stream based solution. This is very basic case and I want to know how this can be done with stream api?
I have created this basic stream function:-
private String appendedDashOnEachThirdDigitByStream(String digitString) {
//char[] chars = digitString.toCharArray();
//return IntStream.range(0, chars.length)
// .filter(i -> (i + 1) % 3 == 0 && i - 1 != chars.length)
// .collect(Collectors.collectingAndThen(Collectors.toList(),
// new Function<List<Object>, Object>() {
// }))
return digitString.chars()
.mapToObj(value -> String.valueOf((char) value))
.collect(Collectors.joining("-"));
}