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);
+ }
+}