From 61ca9fc9842a44139a662a3ab4865aaedf5bca40 Mon Sep 17 00:00:00 2001 From: Shekhar Gulati Date: Wed, 24 Aug 2016 15:32:45 +0530 Subject: [PATCH] Resolved #66 --- src/main/java/strman/Strman.java | 32 +++++++++++++++++++++++++++- src/test/java/strman/StrmanTest.java | 16 ++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index 56d948b..2f7e809 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -1236,7 +1236,7 @@ public abstract class Strman { /** - * Removes leading whitespace from string. + * Removes leading characters from string. * * @param input The string to trim. * @param chars The characters to trim. @@ -1252,6 +1252,36 @@ public abstract class Strman { }); } + /** + * Removes trailing whitespace from string. + * + * @param input The string to trim. + * @return Returns the trimmed string. + */ + public static Optional trimEnd(final String input) { + return Optional.ofNullable(input) + .filter(v -> !v.isEmpty()) + .map(Strman::rightTrim); + } + + + /** + * Removes trailing characters from string. + * + * @param input The string to trim. + * @param chars The characters to trim. + * + * @return Returns the trimmed string. + */ + public static Optional trimEnd(final String input, String... chars) { + return Optional.ofNullable(input) + .filter(v -> !v.isEmpty()) + .map(v -> { + String pattern = String.format("[%s]+$", join(chars, "\\")); + return v.replaceAll(pattern, ""); + }); + } + private static void validate(String value, Predicate predicate, final Supplier supplier) { if (predicate.test(value)) { diff --git a/src/test/java/strman/StrmanTest.java b/src/test/java/strman/StrmanTest.java index e19ef00..176253c 100644 --- a/src/test/java/strman/StrmanTest.java +++ b/src/test/java/strman/StrmanTest.java @@ -974,4 +974,20 @@ public class StrmanTest { assertThat(trimStart("-_-!abc-_-", "_", "-", "!"), is(Optional.of("abc-_-"))); assertThat(trimStart("-_-#abc-_-", "_", "-", "!", "#"), is(Optional.of("abc-_-"))); } + + @Test + public void trimEnd_shouldRemoveAllTrailingWhitespace() throws Exception { + assertThat(trimEnd(" abc "), is(Optional.of(" abc"))); + assertThat(trimEnd("abc "), is(Optional.of("abc"))); + assertThat(trimEnd("abc"), is(Optional.of("abc"))); + assertThat(trimEnd(""), is(Optional.empty())); + assertThat(trimEnd(null), is(Optional.empty())); + } + + @Test + public void trimEnd_shouldRemoveAllTrailingSpecialCharacters() throws Exception { + assertThat(trimEnd("-_-abc-_-", "_", "-"), is(Optional.of("-_-abc"))); + assertThat(trimEnd("-_-abc!-_-", "_", "-", "!"), is(Optional.of("-_-abc"))); + assertThat(trimEnd("-_-abc#-_-", "_", "-", "!", "#"), is(Optional.of("-_-abc"))); + } } \ No newline at end of file