From 859a2e93fdd839995c825b60fffbf1843542d43e Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Fri, 28 Feb 2020 18:55:48 +0100 Subject: [PATCH 1/9] Fix the Case Insensitive article name and github references --- core-java-modules/core-java-string-operations-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md index 6e88eda122..9d8ce8fd6f 100644 --- a/core-java-modules/core-java-string-operations-2/README.md +++ b/core-java-modules/core-java-string-operations-2/README.md @@ -8,5 +8,5 @@ This module contains articles about string operations. - [String Initialization in Java](https://www.baeldung.com/java-string-initialization) - [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) - [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) -- [How to avoid String contains() Case Insensitive in Java](https://www.baeldung.com/how-to-avoid-string-contains-case-insensitive-in-java) +- [Case-Insensitive String Matching in Java](https://www.baeldung.com/java-case-insensitive-string-matching) - More articles: [[<-- prev]](../core-java-string-operations) From a8c49a9bec4608aa6afc0b6861a40bc81df3015a Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Fri, 28 Feb 2020 20:59:38 +0100 Subject: [PATCH 2/9] Add the functionality and the unit testing for LTrim and RTrim --- .../core-java-string-operations-2/README.md | 1 + .../java/com/baeldung/trim/LTrimRTrim.java | 138 ++++++++++++++++++ .../com/baeldung/trim/LTrimRTrimUnitTest.java | 77 ++++++++++ 3 files changed, 216 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java create mode 100644 core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md index 9d8ce8fd6f..8687ac19ba 100644 --- a/core-java-modules/core-java-string-operations-2/README.md +++ b/core-java-modules/core-java-string-operations-2/README.md @@ -9,4 +9,5 @@ This module contains articles about string operations. - [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) - [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) - [Case-Insensitive String Matching in Java](https://www.baeldung.com/java-case-insensitive-string-matching) +- [L-Trim and R-Trim in Java](https://www.baeldung.com/l-trim-and-r-trim-in-java) - More articles: [[<-- prev]](../core-java-string-operations) diff --git a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java new file mode 100644 index 0000000000..d3b2e7dbfc --- /dev/null +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java @@ -0,0 +1,138 @@ +package com.baeldung.trim; + +import java.util.concurrent.TimeUnit; +import java.util.regex.Pattern; + +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; + +import com.google.common.base.CharMatcher; + +/** + * Based on https://github.com/tedyoung/indexof-contains-benchmark + */ +@Fork(5) +@State(Scope.Benchmark) +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +public class LTrimRTrim { + + private String src; + private static String ltrimResult; + private static String rtrimResult; + private static Pattern LTRIM = Pattern.compile("^\\s+"); + private static Pattern RTRIM = Pattern.compile("\\s+$"); + + public static void main(String[] args) throws Exception { + org.openjdk.jmh.Main.main(args); + } + + @Setup + public void setup() { + src = " White spaces left and right "; + ltrimResult = "White spaces left and right "; + rtrimResult = " White spaces left and right"; + } + + public static String whileLtrim(String s) { + int i = 0; + while (i < s.length() && Character.isWhitespace(s.charAt(i))) { + i++; + } + return s.substring(i); + } + + public static String whileRtrim(String s) { + int i = s.length()-1; + while (i >= 0 && Character.isWhitespace(s.charAt(i))) { + i--; + } + return s.substring(0,i+1); + } + + private static boolean checkStrings(String ltrim, String rtrim) { + boolean result = false; + + if (ltrimResult.equalsIgnoreCase(ltrim) && rtrimResult.equalsIgnoreCase(rtrim)) + result = true; + + return result; + } + + // Going through the String detecting Whitespaces + @Benchmark + public boolean whileCharacters() { + String ltrim = whileLtrim(src); + String rtrim = whileRtrim(src); + + return checkStrings(ltrim, rtrim); + } + + // replaceAll() and Regular Expressions + @Benchmark + public boolean replaceAllRegularExpression() { + String ltrim = src.replaceAll("^\\s+", ""); + String rtrim = src.replaceAll("\\s+$", ""); + + return checkStrings(ltrim, rtrim); + } + + public static String patternLtrim(String s) { + return LTRIM.matcher(s).replaceAll(""); + } + + public static String patternRtrim(String s) { + return RTRIM.matcher(s).replaceAll(""); + } + + // Pattern matches() with replaceAll + @Benchmark + public boolean patternMatchesLTtrimRTrim() { + String ltrim = patternLtrim(src); + String rtrim = patternRtrim(src); + + return checkStrings(ltrim, rtrim); + } + + + public static String guavaLtrim(String s) { + return CharMatcher.whitespace().trimLeadingFrom(s); + } + + public static String guavaRtrim(String s) { + return CharMatcher.whitespace().trimTrailingFrom(s); + } + + // Guava CharMatcher trimLeadingFrom / trimTrailingFrom + @Benchmark + public boolean guavaCharMatcher() { + String ltrim = guavaLtrim(src); + String rtrim = guavaRtrim(src); + + return checkStrings(ltrim, rtrim); + } + + public static String stringUtilsRTrim(String str) { + return org.apache.commons.lang3.StringUtils.stripEnd(str, " "); + } + + public static String stringUtilsLTrim(String str) { + return org.apache.commons.lang3.StringUtils.stripStart(str, " "); + } + + // Apache Commons StringUtils containsIgnoreCase + @Benchmark + public boolean apacheCommonsStringUtils() { + String ltrim = stringUtilsLTrim(src); + String rtrim = stringUtilsRTrim(src); + + return checkStrings(ltrim, rtrim); + } + +} diff --git a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java new file mode 100644 index 0000000000..4da35909f7 --- /dev/null +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java @@ -0,0 +1,77 @@ +package com.baeldung.trim; + +import org.apache.commons.lang3.StringUtils; +import org.junit.Assert; +import org.junit.Test; + +import java.util.regex.Pattern; + +/** + * BAEL-3755: LTrim and RTrim examples. + */ +public class LTrimRTrimUnitTest { + + private String src = " White spaces left and right "; + private final static String ltrimResult = "White spaces left and right "; + private final static String rtrimResult = " White spaces left and right"; + + @Test + public void givenString_whenCallingWhileCharacters_thenReturnsTrue() { + String ltrim = LTrimRTrim.whileLtrim(src); + String rtrim = LTrimRTrim.whileRtrim(src); + + // Compare the Strings obtained and the expected + Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); + + Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); + } + + @Test + public void givenString_whenCallingContainsWithReplaceAll_shouldReturnTrue() { + // Use replaceAll with Regular Expressions + String ltrim = src.replaceAll("^\\s+", ""); + String rtrim = src.replaceAll("\\s+$", ""); + + // Compare the Strings obtained and the expected + Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); + + Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); + } + + @Test + public void givenString_whenCallingPaternCompileMatcherReplaceAll_thenReturnsTrue() { + // Use Pattern Compile Matcher and Find to avoid case insensitive issues + String ltrim = LTrimRTrim.patternLtrim(src); + String rtrim = LTrimRTrim.patternRtrim(src); + + // Compare the Strings obtained and the expected + Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); + + Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); + } + + @Test + public void givenString_whenCallingGuavaCharMatcher_thenReturnsTrue() { + // Use StringUtils containsIgnoreCase to avoid case insensitive issues + String ltrim = LTrimRTrim.guavaLtrim(src); + String rtrim = LTrimRTrim.guavaRtrim(src); + + // Compare the Strings obtained and the expected + Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); + + Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); + } + + @Test + public void givenString_whenCallingStringUtilsStripStartEnd_thenReturnsTrue() { + // Use StringUtils containsIgnoreCase to avoid case insensitive issues + String ltrim = LTrimRTrim.stringUtilsLTrim(src); + String rtrim = LTrimRTrim.stringUtilsRTrim(src); + + // Compare the Strings obtained and the expected + Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); + + Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); + } + +} From 17c42c903b02a9ded1cc764c21c4c3403676da87 Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Fri, 28 Feb 2020 23:53:33 +0100 Subject: [PATCH 3/9] Reformat and correct the indentation --- .../java/com/baeldung/trim/LTrimRTrim.java | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java index d3b2e7dbfc..d1c51b492e 100644 --- a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java @@ -39,7 +39,7 @@ public class LTrimRTrim { ltrimResult = "White spaces left and right "; rtrimResult = " White spaces left and right"; } - + public static String whileLtrim(String s) { int i = 0; while (i < s.length() && Character.isWhitespace(s.charAt(i))) { @@ -49,13 +49,13 @@ public class LTrimRTrim { } public static String whileRtrim(String s) { - int i = s.length()-1; + int i = s.length() - 1; while (i >= 0 && Character.isWhitespace(s.charAt(i))) { i--; } - return s.substring(0,i+1); + return s.substring(0, i + 1); } - + private static boolean checkStrings(String ltrim, String rtrim) { boolean result = false; @@ -64,7 +64,7 @@ public class LTrimRTrim { return result; } - + // Going through the String detecting Whitespaces @Benchmark public boolean whileCharacters() { @@ -84,13 +84,15 @@ public class LTrimRTrim { } public static String patternLtrim(String s) { - return LTRIM.matcher(s).replaceAll(""); + return LTRIM.matcher(s) + .replaceAll(""); } - + public static String patternRtrim(String s) { - return RTRIM.matcher(s).replaceAll(""); + return RTRIM.matcher(s) + .replaceAll(""); } - + // Pattern matches() with replaceAll @Benchmark public boolean patternMatchesLTtrimRTrim() { @@ -100,15 +102,16 @@ public class LTrimRTrim { return checkStrings(ltrim, rtrim); } - public static String guavaLtrim(String s) { - return CharMatcher.whitespace().trimLeadingFrom(s); + return CharMatcher.whitespace() + .trimLeadingFrom(s); } - + public static String guavaRtrim(String s) { - return CharMatcher.whitespace().trimTrailingFrom(s); + return CharMatcher.whitespace() + .trimTrailingFrom(s); } - + // Guava CharMatcher trimLeadingFrom / trimTrailingFrom @Benchmark public boolean guavaCharMatcher() { @@ -117,7 +120,7 @@ public class LTrimRTrim { return checkStrings(ltrim, rtrim); } - + public static String stringUtilsRTrim(String str) { return org.apache.commons.lang3.StringUtils.stripEnd(str, " "); } @@ -133,6 +136,6 @@ public class LTrimRTrim { String rtrim = stringUtilsRTrim(src); return checkStrings(ltrim, rtrim); - } + } } From 9c162e8b91068ab9b8adba8072bcee72c7fa08eb Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Fri, 6 Mar 2020 21:58:00 +0100 Subject: [PATCH 4/9] Clean Apache Commons and Guava functions and tests --- .../java/com/baeldung/trim/LTrimRTrim.java | 26 +++---------------- .../com/baeldung/trim/LTrimRTrimUnitTest.java | 10 ++++--- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java index d1c51b492e..af46f426d8 100644 --- a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java @@ -102,38 +102,20 @@ public class LTrimRTrim { return checkStrings(ltrim, rtrim); } - public static String guavaLtrim(String s) { - return CharMatcher.whitespace() - .trimLeadingFrom(s); - } - - public static String guavaRtrim(String s) { - return CharMatcher.whitespace() - .trimTrailingFrom(s); - } - // Guava CharMatcher trimLeadingFrom / trimTrailingFrom @Benchmark public boolean guavaCharMatcher() { - String ltrim = guavaLtrim(src); - String rtrim = guavaRtrim(src); + String ltrim = CharMatcher.whitespace().trimLeadingFrom(src); + String rtrim = CharMatcher.whitespace().trimTrailingFrom(src); return checkStrings(ltrim, rtrim); } - public static String stringUtilsRTrim(String str) { - return org.apache.commons.lang3.StringUtils.stripEnd(str, " "); - } - - public static String stringUtilsLTrim(String str) { - return org.apache.commons.lang3.StringUtils.stripStart(str, " "); - } - // Apache Commons StringUtils containsIgnoreCase @Benchmark public boolean apacheCommonsStringUtils() { - String ltrim = stringUtilsLTrim(src); - String rtrim = stringUtilsRTrim(src); + String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, " "); + String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, " "); return checkStrings(ltrim, rtrim); } diff --git a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java index 4da35909f7..18c8608455 100644 --- a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java @@ -4,6 +4,8 @@ import org.apache.commons.lang3.StringUtils; import org.junit.Assert; import org.junit.Test; +import com.google.common.base.CharMatcher; + import java.util.regex.Pattern; /** @@ -53,8 +55,8 @@ public class LTrimRTrimUnitTest { @Test public void givenString_whenCallingGuavaCharMatcher_thenReturnsTrue() { // Use StringUtils containsIgnoreCase to avoid case insensitive issues - String ltrim = LTrimRTrim.guavaLtrim(src); - String rtrim = LTrimRTrim.guavaRtrim(src); + String ltrim = CharMatcher.whitespace().trimLeadingFrom(src);; + String rtrim = CharMatcher.whitespace().trimTrailingFrom(src); // Compare the Strings obtained and the expected Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); @@ -65,8 +67,8 @@ public class LTrimRTrimUnitTest { @Test public void givenString_whenCallingStringUtilsStripStartEnd_thenReturnsTrue() { // Use StringUtils containsIgnoreCase to avoid case insensitive issues - String ltrim = LTrimRTrim.stringUtilsLTrim(src); - String rtrim = LTrimRTrim.stringUtilsRTrim(src); + String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, " "); + String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, " "); // Compare the Strings obtained and the expected Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); From ab5f6b967a69177040bac103cc793bfebcce1bb6 Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Tue, 10 Mar 2020 00:06:36 +0100 Subject: [PATCH 5/9] Add null as stripChar for Apache Commons StringUtils example --- .../src/main/java/com/baeldung/trim/LTrimRTrim.java | 3 +++ .../test/java/com/baeldung/trim/LTrimRTrimUnitTest.java | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java index af46f426d8..9ca1122441 100644 --- a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java @@ -117,6 +117,9 @@ public class LTrimRTrim { String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, " "); String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, " "); + ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); + rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); + return checkStrings(ltrim, rtrim); } diff --git a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java index 18c8608455..f60340c238 100644 --- a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java @@ -69,10 +69,16 @@ public class LTrimRTrimUnitTest { // Use StringUtils containsIgnoreCase to avoid case insensitive issues String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, " "); String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, " "); + + // Compare the Strings obtained and the expected + Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); + Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); + + ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); + rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); // Compare the Strings obtained and the expected Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); - Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); } From 214ce71433810fafbf2eb5a6ff14faae2c716fd0 Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Tue, 10 Mar 2020 14:17:19 +0100 Subject: [PATCH 6/9] Keep only null as stripChar in the Apache Commons example --- .../src/main/java/com/baeldung/trim/LTrimRTrim.java | 7 ++----- .../java/com/baeldung/trim/LTrimRTrimUnitTest.java | 11 ++--------- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java index 9ca1122441..9bf10e22cf 100644 --- a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java @@ -114,11 +114,8 @@ public class LTrimRTrim { // Apache Commons StringUtils containsIgnoreCase @Benchmark public boolean apacheCommonsStringUtils() { - String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, " "); - String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, " "); - - ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); - rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); + String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); + String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); return checkStrings(ltrim, rtrim); } diff --git a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java index f60340c238..3d8f8b382b 100644 --- a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java @@ -67,15 +67,8 @@ public class LTrimRTrimUnitTest { @Test public void givenString_whenCallingStringUtilsStripStartEnd_thenReturnsTrue() { // Use StringUtils containsIgnoreCase to avoid case insensitive issues - String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, " "); - String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, " "); - - // Compare the Strings obtained and the expected - Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); - Assert.assertTrue(rtrimResult.equalsIgnoreCase(rtrim)); - - ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); - rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); + String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); + String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); // Compare the Strings obtained and the expected Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); From 5ff2933a0dcc1e40695288ac73dfe1afadcbe149 Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Fri, 13 Mar 2020 00:35:43 +0100 Subject: [PATCH 7/9] Upgrade Guava version --- core-java-modules/core-java-string-operations-2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-string-operations-2/pom.xml b/core-java-modules/core-java-string-operations-2/pom.xml index 7bb687ea2b..2c19242831 100644 --- a/core-java-modules/core-java-string-operations-2/pom.xml +++ b/core-java-modules/core-java-string-operations-2/pom.xml @@ -109,7 +109,7 @@ 3.6.1 2.0.0.Final 3.8.1 - 27.0.1-jre + 28.2-jre 6.0.2.Final 3.0.0 2.2.6 From cba16ebc498694f82aa9832c605db41034d6ba1f Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Sat, 14 Mar 2020 23:06:54 +0100 Subject: [PATCH 8/9] Remove FQCN for StringUtils and let private functions when possible --- .../main/java/com/baeldung/trim/LTrimRTrim.java | 17 +++++++++-------- .../com/baeldung/trim/LTrimRTrimUnitTest.java | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java index 9bf10e22cf..858e90abe4 100644 --- a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java @@ -3,6 +3,7 @@ package com.baeldung.trim; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; @@ -34,7 +35,7 @@ public class LTrimRTrim { } @Setup - public void setup() { + private void setup() { src = " White spaces left and right "; ltrimResult = "White spaces left and right "; rtrimResult = " White spaces left and right"; @@ -67,7 +68,7 @@ public class LTrimRTrim { // Going through the String detecting Whitespaces @Benchmark - public boolean whileCharacters() { + private boolean whileCharacters() { String ltrim = whileLtrim(src); String rtrim = whileRtrim(src); @@ -76,7 +77,7 @@ public class LTrimRTrim { // replaceAll() and Regular Expressions @Benchmark - public boolean replaceAllRegularExpression() { + private boolean replaceAllRegularExpression() { String ltrim = src.replaceAll("^\\s+", ""); String rtrim = src.replaceAll("\\s+$", ""); @@ -95,7 +96,7 @@ public class LTrimRTrim { // Pattern matches() with replaceAll @Benchmark - public boolean patternMatchesLTtrimRTrim() { + private boolean patternMatchesLTtrimRTrim() { String ltrim = patternLtrim(src); String rtrim = patternRtrim(src); @@ -104,7 +105,7 @@ public class LTrimRTrim { // Guava CharMatcher trimLeadingFrom / trimTrailingFrom @Benchmark - public boolean guavaCharMatcher() { + private boolean guavaCharMatcher() { String ltrim = CharMatcher.whitespace().trimLeadingFrom(src); String rtrim = CharMatcher.whitespace().trimTrailingFrom(src); @@ -113,9 +114,9 @@ public class LTrimRTrim { // Apache Commons StringUtils containsIgnoreCase @Benchmark - public boolean apacheCommonsStringUtils() { - String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); - String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); + private boolean apacheCommonsStringUtils() { + String ltrim = StringUtils.stripStart(src, null); + String rtrim = StringUtils.stripEnd(src, null); return checkStrings(ltrim, rtrim); } diff --git a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java index 3d8f8b382b..78bf01e540 100644 --- a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/trim/LTrimRTrimUnitTest.java @@ -67,8 +67,8 @@ public class LTrimRTrimUnitTest { @Test public void givenString_whenCallingStringUtilsStripStartEnd_thenReturnsTrue() { // Use StringUtils containsIgnoreCase to avoid case insensitive issues - String ltrim = org.apache.commons.lang3.StringUtils.stripStart(src, null); - String rtrim = org.apache.commons.lang3.StringUtils.stripEnd(src, null); + String ltrim = StringUtils.stripStart(src, null); + String rtrim = StringUtils.stripEnd(src, null); // Compare the Strings obtained and the expected Assert.assertTrue(ltrimResult.equalsIgnoreCase(ltrim)); From cea7f64174e43c20e03952b97bdc01bfd3312ef3 Mon Sep 17 00:00:00 2001 From: Cavero Barca Date: Sun, 15 Mar 2020 08:59:15 +0100 Subject: [PATCH 9/9] Convert Benchmark functions to public to avoid compilation errors --- .../src/main/java/com/baeldung/trim/LTrimRTrim.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java index 858e90abe4..b300c783e1 100644 --- a/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java +++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/trim/LTrimRTrim.java @@ -35,7 +35,7 @@ public class LTrimRTrim { } @Setup - private void setup() { + public void setup() { src = " White spaces left and right "; ltrimResult = "White spaces left and right "; rtrimResult = " White spaces left and right"; @@ -68,7 +68,7 @@ public class LTrimRTrim { // Going through the String detecting Whitespaces @Benchmark - private boolean whileCharacters() { + public boolean whileCharacters() { String ltrim = whileLtrim(src); String rtrim = whileRtrim(src); @@ -77,7 +77,7 @@ public class LTrimRTrim { // replaceAll() and Regular Expressions @Benchmark - private boolean replaceAllRegularExpression() { + public boolean replaceAllRegularExpression() { String ltrim = src.replaceAll("^\\s+", ""); String rtrim = src.replaceAll("\\s+$", ""); @@ -96,7 +96,7 @@ public class LTrimRTrim { // Pattern matches() with replaceAll @Benchmark - private boolean patternMatchesLTtrimRTrim() { + public boolean patternMatchesLTtrimRTrim() { String ltrim = patternLtrim(src); String rtrim = patternRtrim(src); @@ -105,7 +105,7 @@ public class LTrimRTrim { // Guava CharMatcher trimLeadingFrom / trimTrailingFrom @Benchmark - private boolean guavaCharMatcher() { + public boolean guavaCharMatcher() { String ltrim = CharMatcher.whitespace().trimLeadingFrom(src); String rtrim = CharMatcher.whitespace().trimTrailingFrom(src); @@ -114,7 +114,7 @@ public class LTrimRTrim { // Apache Commons StringUtils containsIgnoreCase @Benchmark - private boolean apacheCommonsStringUtils() { + public boolean apacheCommonsStringUtils() { String ltrim = StringUtils.stripStart(src, null); String rtrim = StringUtils.stripEnd(src, null);