diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index 1e11f90..f97bd82 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -542,7 +542,7 @@ public abstract class Strman { if (value.length() > length) { return value; } - return append(Stream.generate(() -> pad).limit(length - value.length()).collect(joining()), value); + return append(repeat(pad, length - value.length()), value); } /** @@ -785,6 +785,22 @@ public abstract class Strman { return new StringBuilder(value).reverse().toString(); } + /** + * Returns a new string of a given length such that the ending of the string is padded. + * + * @param value The input String + * @param length Max length of String. + * @param pad Character to repeat + * @return Right padded String + */ + public static String rightPad(final String value, String pad, final int length) { + validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER); + if (value.length() > length) { + return value; + } + return append(value, repeat(pad, length - value.length())); + } + public static String decode(final String value, final int digits, final int radix) { validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER); return Arrays diff --git a/src/test/java/strman/StrmanTest.java b/src/test/java/strman/StrmanTest.java index 9b2b9c8..b148c63 100644 --- a/src/test/java/strman/StrmanTest.java +++ b/src/test/java/strman/StrmanTest.java @@ -602,4 +602,14 @@ public class StrmanTest { assertThat(reverse("foo_"), equalTo("_oof")); assertThat(reverse("f"), equalTo("f")); } + + @Test + public void rightPad_shouldRightPadAString() throws Exception { + assertThat(rightPad("1", "0", 5), equalTo("10000")); + assertThat(rightPad("10", "0", 5), equalTo("10000")); + assertThat(rightPad("100", "0", 5), equalTo("10000")); + assertThat(rightPad("1000", "0", 5), equalTo("10000")); + assertThat(rightPad("10000", "0", 5), equalTo("10000")); + assertThat(rightPad("10000000", "0", 5), equalTo("10000000")); + } } \ No newline at end of file