From d17c2be71248df936601748f40b508724c16a423 Mon Sep 17 00:00:00 2001 From: Teica Date: Sat, 30 Oct 2021 16:37:54 +0200 Subject: [PATCH] BAEL-5195 split string by multiple delimiters (#11356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * BAEL-5195 split string by multiple delimiters * Delete baeldun * added assertions of the content Co-authored-by: Matea Pejčinović --- .../core-java-string-operations-3/pom.xml | 6 ++ .../MultipleDelimitersSplitUnitTest.java | 66 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/multipledelimiterssplit/MultipleDelimitersSplitUnitTest.java diff --git a/core-java-modules/core-java-string-operations-3/pom.xml b/core-java-modules/core-java-string-operations-3/pom.xml index 642ade5ab3..20e9bcb39a 100644 --- a/core-java-modules/core-java-string-operations-3/pom.xml +++ b/core-java-modules/core-java-string-operations-3/pom.xml @@ -52,6 +52,11 @@ semver4j ${semver4j.version} + + com.google.guava + guava + ${guava.version} + @@ -80,6 +85,7 @@ 3.6.1 5.3.9 3.12.0 + 31.0.1-jre 3.6.3 6.1.1 2.11.1 diff --git a/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/multipledelimiterssplit/MultipleDelimitersSplitUnitTest.java b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/multipledelimiterssplit/MultipleDelimitersSplitUnitTest.java new file mode 100644 index 0000000000..c8f8fc2d98 --- /dev/null +++ b/core-java-modules/core-java-string-operations-3/src/test/java/com/baeldung/multipledelimiterssplit/MultipleDelimitersSplitUnitTest.java @@ -0,0 +1,66 @@ +package com.baeldung.multipledelimiterssplit; + +import com.google.common.base.CharMatcher; +import com.google.common.base.Splitter; +import com.google.common.collect.Iterators; +import org.apache.commons.lang3.StringUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; + +import java.util.Arrays; +import java.util.regex.Pattern; + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class MultipleDelimitersSplitUnitTest { + + @Test + public void givenString_whenSplittingByMultipleDelimitersWithRegEx_thenStringSplit() { + String example = "Mary;Thomas:Jane-Kate"; + String[] names = example.split(";|:|-"); + String[] expectedNames = new String[]{"Mary", "Thomas", "Jane", "Kate"}; + Assertions.assertEquals(4, names.length); + Assertions.assertArrayEquals(expectedNames, names); + } + + @Test + public void givenString_whenSplittingByWithCharMatcherAndOnMethod_thenStringSplit() { + String example = "Mary;Thomas:Jane-Kate"; + String[] expectedArray = new String[]{"Mary", "Thomas", "Jane", "Kate"}; + Iterable expected = Arrays.asList(expectedArray); + Iterable names = Splitter.on(CharMatcher.anyOf(";:-")).split(example); + Assertions.assertEquals(4, Iterators.size(names.iterator())); + Assertions.assertIterableEquals(expected, names); + } + + @Test + public void givenString_whenSplittingByWithRegexAndOnPatternMethod_thenStringSplit() { + String example = "Mary;Thomas:Jane-Kate"; + String[] expectedArray = new String[]{"Mary", "Thomas", "Jane", "Kate"}; + Iterable expected = Arrays.asList(expectedArray); + Iterable names = Splitter.on(Pattern.compile(";|:|-")).split(example); + Assertions.assertEquals(4, Iterators.size(names.iterator())); + Assertions.assertIterableEquals(expected, names); + } + + @Test + public void givenString_whenSplittingByMultipleDelimitersWithGuava_thenStringSplit() { + String example = "Mary;Thomas:Jane-Kate"; + String[] expectedArray = new String[]{"Mary", "Thomas", "Jane", "Kate"}; + Iterable expected = Arrays.asList(expectedArray); + Iterable names = Splitter.onPattern(";|:|-").split(example); + Assertions.assertEquals(4, Iterators.size(names.iterator())); + Assertions.assertIterableEquals(expected, names); + } + + @Test + public void givenString_whenSplittingByMultipleDelimitersWithApache_thenStringSplit() { + String example = "Mary;Thomas:Jane-Kate"; + String[] expectedNames = new String[]{"Mary", "Thomas", "Jane", "Kate"}; + String[] names = StringUtils.split(example, ";:-"); + Assertions.assertEquals(4, names.length); + Assertions.assertArrayEquals(expectedNames, names); + } + +} +