This commit is contained in:
Shekhar Gulati
2017-06-23 21:23:36 +05:30
parent db5a8b5d65
commit a25cba4c63
2 changed files with 23 additions and 0 deletions
+15
View File
@@ -1389,6 +1389,21 @@ public abstract class Strman {
return resultBuilder.toString();
}
public static String[] chop(String input, int step) {
if (input == null || input.length() == 0) {
return EMPTY_ARRAY;
}
if (step == 0) {
return new String[]{input};
}
int strLength = input.length();
int iterations = strLength % step == 0 ? strLength / step : strLength / step + 1;
return IntStream.iterate(0, i -> i + step)
.limit(iterations)
.mapToObj(i -> input.substring(i, (i + step) < strLength ? i + step : strLength))
.toArray(String[]::new);
}
private static void validate(String value, Predicate<String> predicate, final Supplier<String> supplier) {
if (predicate.test(value)) {
throw new IllegalArgumentException(supplier.get());
+8
View File
@@ -1176,4 +1176,12 @@ public class StrmanTests {
assertThat(swapCase(""), equalTo(""));
assertThat(swapCase(null), equalTo(""));
}
@Test
public void chop_shouldChopStringByStep() throws Exception {
assertThat(chop(null, 2).length, equalTo(0));
assertThat(chop("whitespace", 2).length, equalTo(5));
assertThat(chop("whitespace", 3).length, equalTo(4));
assertThat(chop("whitespace", 0)[0].length(), equalTo(10));
}
}