From 6e3bb64b1f0ff832d38bab321a590a4f91a4eb78 Mon Sep 17 00:00:00 2001 From: alemoles Date: Sun, 27 Nov 2022 19:28:44 -0300 Subject: [PATCH] BAEL-5981 - String Interpolation in Java (#13092) --- .../core-java-string-operations-5/pom.xml | 6 ++ .../StringInterpolationUnitTest.java | 84 +++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/string_interpolation/StringInterpolationUnitTest.java diff --git a/core-java-modules/core-java-string-operations-5/pom.xml b/core-java-modules/core-java-string-operations-5/pom.xml index d7eade0145..efb32c73b9 100644 --- a/core-java-modules/core-java-string-operations-5/pom.xml +++ b/core-java-modules/core-java-string-operations-5/pom.xml @@ -20,6 +20,11 @@ commons-lang3 ${apache.commons.lang3.version} + + org.apache.commons + commons-text + ${commons-text.version} + @@ -39,6 +44,7 @@ 11 11 3.12.0 + 1.10.0 \ No newline at end of file diff --git a/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/string_interpolation/StringInterpolationUnitTest.java b/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/string_interpolation/StringInterpolationUnitTest.java new file mode 100644 index 0000000000..7b2fa2ce97 --- /dev/null +++ b/core-java-modules/core-java-string-operations-5/src/test/java/com/baeldung/string_interpolation/StringInterpolationUnitTest.java @@ -0,0 +1,84 @@ +package com.baeldung.string_interpolation; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.text.MessageFormat; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.text.StringSubstitutor; +import org.junit.jupiter.api.Test; + +public class StringInterpolationUnitTest { + private final String EXPECTED_STRING = "String Interpolation in Java with some Java examples."; + + @Test + public void givenTwoString_thenInterpolateWithPlusSign() { + String EXPECTED_STRING = "String Interpolation in Java with some Java examples."; + String first = "Interpolation"; + String second = "Java"; + String result = "String " + first + " in " + second + " with some " + second + " examples."; + assertEquals(EXPECTED_STRING, result); + } + + @Test + public void givenTwoString_thenInterpolateWithFormat() { + String first = "Interpolation"; + String second = "Java"; + String result = String.format("String %s in %s with some %s examples.", first, second, second); + assertEquals(EXPECTED_STRING, result); + } + + @Test + public void givenTwoString_thenInterpolateWithFormatted() { + String first = "Interpolation"; + String second = "Java"; + String result = String.format("String %s in %s with some %s examples.", first, second, second); + assertEquals(EXPECTED_STRING, result); + } + + @Test + public void givenTwoString_thenInterpolateWithFormatStringReference() { + String first = "Interpolation"; + String second = "Java"; + String result = String.format("String %1$s in %2$s with some %2$s examples.", first, second); + assertEquals(EXPECTED_STRING, result); + } + + @Test + public void givenTwoString_thenInterpolateWithStringBuilder() { + String first = "Interpolation"; + String second = "Java"; + StringBuilder builder = new StringBuilder(); + builder.append("String ") + .append(first) + .append(" in ") + .append(second) + .append(" with some ") + .append(second) + .append(" examples."); + String result = builder.toString(); + assertEquals(EXPECTED_STRING, result); + } + + @Test + public void givenTwoString_thenInterpolateWithMessageFormat() { + String first = "Interpolation"; + String second = "Java"; + String result = MessageFormat.format("String {0} in {1} with some {1} examples.", first, second); + assertEquals(EXPECTED_STRING, result); + } + + @Test + public void givenTwoString_thenInterpolateWithStringSubstitutor() { + String baseString = "String ${first} in ${second} with some ${second} examples."; + String first = "Interpolation"; + String second = "Java"; + Map parameters = new HashMap<>(); + parameters.put("first", first); + parameters.put("second", second); + StringSubstitutor substitutor = new StringSubstitutor(parameters); + String result = substitutor.replace(baseString); + assertEquals(EXPECTED_STRING, result); + } +}