From ee5c3baea71f1cc1664b962fa444bce10a7f1a7d Mon Sep 17 00:00:00 2001 From: Shekhar Gulati Date: Sat, 21 May 2016 22:25:10 +0530 Subject: [PATCH] Fixed #24. Added support for `replace` function --- src/main/java/strman/Strman.java | 18 ++++++++++++++++++ src/test/java/strman/StrmanTest.java | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index a9ff6c6..bc9b772 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -756,6 +756,24 @@ public abstract class Strman { return Stream.generate(() -> value).limit(multiplier).collect(joining()); } + /** + * Replace all occurrences of 'search' value to 'newvalue'. Uses String replace method. + * + * @param value The input + * @param search The String to search + * @param newValue The String to replace + * @param caseSensitive whether search should be case sensitive or not + * @return String replaced with 'newvalue'. + */ + public static String replace(final String value, final String search, final String newValue, final boolean caseSensitive) { + validate(value, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER); + validate(search, NULL_STRING_PREDICATE, NULL_STRING_MSG_SUPPLIER); + if (caseSensitive) { + return value.replace(search, newValue); + } + return value.toLowerCase().replace(search.toLowerCase(), newValue); + } + 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 e826fef..1d425b0 100644 --- a/src/test/java/strman/StrmanTest.java +++ b/src/test/java/strman/StrmanTest.java @@ -580,4 +580,16 @@ public class StrmanTest { assertThat(repeat("1", 4), equalTo("1111")); assertThat(repeat("1", 5), equalTo("11111")); } + + @Test + public void replace_shouldReplaceAllOccurrencesOfString() throws Exception { + assertThat(replace("foo bar", "foo", "bar", true), equalTo("bar bar")); + assertThat(replace("foo bar foo", "foo", "bar", true), equalTo("bar bar bar")); + } + + @Test + public void replace_shouldReplaceAllOccurrencesOfStringCaseSensitive() throws Exception { + assertThat(replace("FOO bar", "foo", "bar", false), equalTo("bar bar")); + assertThat(replace("FOO bar foo", "foo", "bar", false), equalTo("bar bar bar")); + } } \ No newline at end of file