diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md
new file mode 100644
index 0000000000..50f40ac2af
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-2/README.md
@@ -0,0 +1,11 @@
+## Java String Operations
+
+This module contains articles about string operations.
+
+### Relevant Articles:
+- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
+- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings)
+- [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)
+- More articles: [[<-- prev]](../core-java-string-operations)
diff --git a/core-java-modules/core-java-string-operations-2/pom.xml b/core-java-modules/core-java-string-operations-2/pom.xml
new file mode 100644
index 0000000000..95aeec8fcb
--- /dev/null
+++ b/core-java-modules/core-java-string-operations-2/pom.xml
@@ -0,0 +1,81 @@
+
+ 4.0.0
+ core-java-string-operations-2
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-operations-2
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.hibernate.validator
+ hibernate-validator
+ ${hibernate-validator.version}
+
+
+ javax.el
+ javax.el-api
+ ${javax.el-api.version}
+
+
+ org.glassfish.web
+ javax.el
+ ${javax.el.version}
+
+
+ org.hamcrest
+ hamcrest-library
+ ${org.hamcrest.version}
+ test
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-string-operations-2
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.6.1
+ 2.0.0.Final
+ 3.8.1
+ 27.0.1-jre
+ 6.0.2.Final
+ 3.0.0
+ 2.2.6
+
+
+
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
similarity index 75%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
index 6d3234a4ec..85689eff99 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/EmptyStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/EmptyStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class EmptyStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
similarity index 76%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
index 096b83acea..0c7997c075 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/Java5EmptyStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/Java5EmptyStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class Java5EmptyStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
similarity index 77%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
index 26e281c9b7..315ce4613a 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/PlainJavaBlankStringCheck.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/PlainJavaBlankStringCheck.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
class PlainJavaBlankStringCheck {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
similarity index 87%
rename from java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
rename to core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
index 8c484efb43..058d53ba82 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/emptystrings/SomeClassWithValidations.java
+++ b/core-java-modules/core-java-string-operations-2/src/main/java/com/baeldung/emptystrings/SomeClassWithValidations.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
import javax.validation.constraints.Pattern;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
index c395b61068..4826ba2ef7 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToLowerCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToLowerCaseUnitTest.java
@@ -1,29 +1,29 @@
-package com.baeldung.string.changecase;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Locale;
-
-import org.junit.Test;
-
-public class ToLowerCaseUnitTest {
-
- private static final Locale TURKISH = new Locale("tr");
- private String name = "John Doe";
- private String foreignUppercase = "\u0049";
-
- @Test
- public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() {
- assertEquals("john doe", name.toLowerCase());
- }
-
- @Test
- public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() {
- assertEquals("\u0069", foreignUppercase.toLowerCase());
- }
-
- @Test
- public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() {
- assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH));
- }
-}
+package com.baeldung.changecase;
+
+import org.junit.Test;
+
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+
+public class ToLowerCaseUnitTest {
+
+ private static final Locale TURKISH = new Locale("tr");
+ private String name = "John Doe";
+ private String foreignUppercase = "\u0049";
+
+ @Test
+ public void givenMixedCaseString_WhenToLowerCase_ThenResultIsLowerCase() {
+ assertEquals("john doe", name.toLowerCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToLowerCaseWithoutLocale_ThenResultIsLowerCase() {
+ assertEquals("\u0069", foreignUppercase.toLowerCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToLowerCaseWithLocale_ThenResultIsLowerCase() {
+ assertEquals("\u0131", foreignUppercase.toLowerCase(TURKISH));
+ }
+}
diff --git a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
index 1807f854b2..ab740f19b1 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/changecase/ToUpperCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/changecase/ToUpperCaseUnitTest.java
@@ -1,29 +1,29 @@
-package com.baeldung.string.changecase;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.Locale;
-
-import org.junit.Test;
-
-public class ToUpperCaseUnitTest {
-
- private static final Locale TURKISH = new Locale("tr");
- private String name = "John Doe";
- private String foreignLowercase = "\u0069";
-
- @Test
- public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() {
- assertEquals("JOHN DOE", name.toUpperCase());
- }
-
- @Test
- public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() {
- assertEquals("\u0049", foreignLowercase.toUpperCase());
- }
-
- @Test
- public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() {
- assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH));
- }
-}
+package com.baeldung.changecase;
+
+import org.junit.Test;
+
+import java.util.Locale;
+
+import static org.junit.Assert.assertEquals;
+
+public class ToUpperCaseUnitTest {
+
+ private static final Locale TURKISH = new Locale("tr");
+ private String name = "John Doe";
+ private String foreignLowercase = "\u0069";
+
+ @Test
+ public void givenMixedCaseString_WhenToUpperCase_ThenResultIsUpperCase() {
+ assertEquals("JOHN DOE", name.toUpperCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToUpperCaseWithoutLocale_ThenResultIsUpperCase() {
+ assertEquals("\u0049", foreignLowercase.toUpperCase());
+ }
+
+ @Test
+ public void givenForeignString_WhenToUpperCaseWithLocale_ThenResultIsUpperCase() {
+ assertEquals("\u0130", foreignLowercase.toUpperCase(TURKISH));
+ }
+}
diff --git a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
similarity index 96%
rename from java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
index 96b1d681dd..d772c38341 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/emptystrings/EmptyStringsUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/emptystrings/EmptyStringsUnitTest.java
@@ -1,21 +1,17 @@
-package com.baeldung.string.emptystrings;
+package com.baeldung.emptystrings;
-import static org.hamcrest.Matchers.iterableWithSize;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Set;
+import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Test;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
+import java.util.Set;
-import org.apache.commons.lang3.StringUtils;
-import org.junit.Test;
-
-import com.google.common.base.Strings;
+import static org.hamcrest.Matchers.iterableWithSize;
+import static org.junit.Assert.*;
public class EmptyStringsUnitTest {
diff --git a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
similarity index 94%
rename from java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
index 5aab63db94..14fbf20c1d 100644
--- a/java-strings-3/src/test/java/com/baeldung/string/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/equalsIgnoreCase/StringEqualsIgnoreCaseUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.equalsIgnoreCase;
+package com.baeldung.equalsIgnoreCase;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
diff --git a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
similarity index 91%
rename from java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
index 50d9a2b058..02beaa690a 100644
--- a/java-strings-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/initialization/StringInitializationUnitTest.java
@@ -1,11 +1,9 @@
package com.baeldung.initialization;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
-
import org.junit.Test;
+import static org.junit.Assert.*;
+
public class StringInitializationUnitTest {
private String fieldString;
diff --git a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java
rename to core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
index c25d4ce8f9..9a444e8229 100644
--- a/java-strings-2/src/test/java/com/baeldung/StringConcatenationUnitTest.java
+++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/stringconcatenation/StringConcatenationUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung;
+package com.baeldung.stringconcatenation;
import org.junit.Test;
diff --git a/core-java-modules/core-java-string-operations/README.md b/core-java-modules/core-java-string-operations/README.md
new file mode 100644
index 0000000000..18a2649a6a
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/README.md
@@ -0,0 +1,16 @@
+## Java String Operations
+
+This module contains articles about string operations.
+
+### Relevant Articles:
+- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings)
+- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number)
+- [Get Substring from String in Java](https://www.baeldung.com/java-substring)
+- [Split a String in Java](https://www.baeldung.com/java-split-string)
+- [Common String Operations in Java](https://www.baeldung.com/java-string-operations)
+- [Java toString() Method](https://www.baeldung.com/java-tostring)
+- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
+- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
+- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
+- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
+- More articles: [[next -->]](../core-java-string-operations-2)
diff --git a/core-java-modules/core-java-string-operations/pom.xml b/core-java-modules/core-java-string-operations/pom.xml
new file mode 100644
index 0000000000..fdddd99433
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/pom.xml
@@ -0,0 +1,66 @@
+
+ 4.0.0
+ core-java-string-operations
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-operations
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-generator.version}
+
+
+ commons-codec
+ commons-codec
+ ${commons-codec.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-string-operations
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.8.1
+ 3.6.1
+ 1.10
+
+
+
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
similarity index 98%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
index c4e2742da6..97e7a46757 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/Benchmarking.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/Benchmarking.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import java.util.concurrent.TimeUnit;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
similarity index 92%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
index 2785df0c9b..6c08615c74 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/CheckIntegerInput.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/CheckIntegerInput.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import java.util.Scanner;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
similarity index 96%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
index 508cedd168..6eed0d777d 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumeric.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumeric.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
similarity index 96%
rename from java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
index bb3c96c06e..a6c5449696 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/isnumeric/IsNumericDriver.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/isnumeric/IsNumericDriver.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import org.apache.log4j.Logger;
diff --git a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
similarity index 98%
rename from java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
index 48b71eed12..f701ab2e45 100644
--- a/java-strings/src/main/java/com/baeldung/string/newline/AddingNewLineToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/newline/AddingNewLineToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.newline;
+package com.baeldung.newline;
public class AddingNewLineToString {
diff --git a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
similarity index 96%
rename from java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
index cdbba1ef53..8a105188ad 100644
--- a/java-strings/src/main/java/com/baeldung/string/JoinerSplitter.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/streamoperations/JoinerSplitter.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.streamoperations;
import java.util.Arrays;
import java.util.List;
diff --git a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
similarity index 79%
rename from java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
index bf33c47a7e..92aef0b879 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/search/performance/SubstringSearchPerformanceComparison.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/substringsearch/SubstringSearchPerformanceComparison.java
@@ -1,18 +1,11 @@
-package com.baeldung.string.search.performance;
+package com.baeldung.substringsearch;
+
+import org.apache.commons.lang3.StringUtils;
+import org.openjdk.jmh.annotations.*;
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;
-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;
-
/**
* Based on https://github.com/tedyoung/indexof-contains-benchmark
*/
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
index 7ab3936cb9..16e2b05a7c 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Customer.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Customer.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class Customer {
private String firstName;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
similarity index 92%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
index 391ced61d3..c942f978da 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerArrayToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerArrayToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.Arrays;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
index ae3d999b12..3ca11779c4 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerComplexObjectToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerComplexObjectToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class CustomerComplexObjectToString extends Customer {
private Order order;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
similarity index 91%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
index 01fe4c8b09..38555aa236 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerPrimitiveToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerPrimitiveToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class CustomerPrimitiveToString extends Customer {
private long balance;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
index 2a9e3700ec..ad0c57351a 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerReflectionToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerReflectionToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.List;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
index b3ff97dc07..7b7d9e4e7d 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/CustomerWrapperCollectionToString.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/CustomerWrapperCollectionToString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import java.util.List;
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java
rename to core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
index 58e0fcce5a..85a5dd169f 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/tostring/Order.java
+++ b/core-java-modules/core-java-string-operations/src/main/java/com/baeldung/tostring/Order.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
public class Order {
diff --git a/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties
new file mode 100644
index 0000000000..2ea9fa9209
--- /dev/null
+++ b/core-java-modules/core-java-string-operations/src/main/resources/log4j.properties
@@ -0,0 +1,8 @@
+# Root logger option
+log4j.rootLogger=DEBUG, stdout
+
+# Redirect log messages to console
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
similarity index 100%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/ApacheCommonsEncodeDecodeUnitTest.java
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
similarity index 100%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/Java8EncodeDecodeUnitTest.java
diff --git a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
similarity index 99%
rename from java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
index e2bb7bb64d..6f8a17e316 100644
--- a/java-strings-2/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/base64encodinganddecoding/StringToByteArrayUnitTest.java
@@ -1,16 +1,15 @@
package com.baeldung.base64encodinganddecoding;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import javax.xml.bind.DatatypeConverter;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Base64;
-import javax.xml.bind.DatatypeConverter;
-
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
public class StringToByteArrayUnitTest {
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
index 6228fdb5af..6c03b00e69 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/CoreJavaIsNumericUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/CoreJavaIsNumericUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
index 346248cb40..3b88721ad4 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsCreatableUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsCreatableUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
index fa2f2aec6d..6b96a6efa1 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/NumberUtilsIsParsableUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/NumberUtilsIsParsableUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
similarity index 93%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
index 0f7f0eb081..04f3de8dc5 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/RegularExpressionsUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/RegularExpressionsUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
index 05651cc567..0c5e52580f 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericSpaceUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
index cae08874da..660426cdbb 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/isnumeric/StringUtilsIsNumericUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/isnumeric/StringUtilsIsNumericUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.isnumeric;
+package com.baeldung.isnumeric;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
index 1936bfb6fb..eaa61e5041 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/SplitUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/split/SplitUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.split;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
similarity index 98%
rename from java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
index a9488e27a4..2a0f03d3a8 100644
--- a/java-strings/src/test/java/com/baeldung/string/JoinerSplitterUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/streamoperations/JoinerSplitterUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.streamoperations;
import org.junit.Test;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
similarity index 99%
rename from java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
index 5339a0c72e..0bab708fde 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/StringComparisonUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/stringcomparison/StringComparisonUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.stringcomparison;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
index eb397f2a3f..00340ba7cc 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/SubstringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substring/SubstringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.substring;
import java.util.Scanner;
import java.util.regex.Matcher;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
index 293e6d2125..c641ccbe07 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/search/SubstringSearchUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/substringsearch/SubstringSearchUnitTest.java
@@ -1,12 +1,12 @@
-package com.baeldung.string.search;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+package com.baeldung.substringsearch;
import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* BAEL-2832: Different ways to check if a Substring could be found in a String.
*/
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
index ced8b15f2e..a754ed3c68 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerArrayToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerArrayToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
similarity index 95%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
index 564fde8766..1b26d3e0a2 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerComplexObjectToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerComplexObjectToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
similarity index 94%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
index f585a8a26c..a21ab1616f 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerPrimitiveToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerPrimitiveToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
similarity index 96%
rename from java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java
rename to core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
index 9b3f8a1a6f..da4937ccdd 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/tostring/CustomerWrapperCollectionToStringUnitTest.java
+++ b/core-java-modules/core-java-string-operations/src/test/java/com/baeldung/tostring/CustomerWrapperCollectionToStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.tostring;
+package com.baeldung.tostring;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/java-strings-2/README.md b/java-strings-2/README.md
index b97df7c969..ecbdb7def9 100644
--- a/java-strings-2/README.md
+++ b/java-strings-2/README.md
@@ -5,13 +5,7 @@ This module contains articles about strings in Java.
### Relevant Articles:
- [Java Localization – Formatting Messages](https://www.baeldung.com/java-localization-messages-formatting)
-- [Check If a String Contains a Substring](https://www.baeldung.com/java-string-contains-substring)
- [Java – Generate Random String](https://www.baeldung.com/java-random-string)
-- [Java Base64 Encoding and Decoding](https://www.baeldung.com/java-base64-encode-and-decode)
-- [Concatenating Strings In Java](https://www.baeldung.com/java-strings-concatenation)
- [Java String Interview Questions and Answers](https://www.baeldung.com/java-string-interview-questions)
-- [Checking for Empty or Blank Strings in Java](https://www.baeldung.com/java-blank-empty-strings)
-- [String Initialization in Java](https://www.baeldung.com/java-string-initialization)
- [Java Multi-line String](https://www.baeldung.com/java-multiline-string)
-- [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case)
-- More articles: [[<-- prev>]](/java-strings) [[next -->]](/java-strings-3)
+- More articles: [[<-- prev>]](/java-strings)
diff --git a/java-strings-3/README.md b/java-strings-3/README.md
deleted file mode 100644
index 642752182f..0000000000
--- a/java-strings-3/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-## Java Strings Cookbooks and Examples
-
-This module contains articles about strings in Java.
-
-### Relevant Articles:
-- [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase)
-- [Finding the Difference Between Two Strings in Java](https://www.baeldung.com/java-difference-between-two-strings)
-- [Counting Words in a String](https://www.baeldung.com/java-word-counting)
-- [Convert Character Array to String in Java](https://www.baeldung.com/java-char-array-to-string)
-- More articles: [[<-- prev>]](/java-strings-2)
diff --git a/java-strings-3/pom.xml b/java-strings-3/pom.xml
deleted file mode 100644
index 4589780c15..0000000000
--- a/java-strings-3/pom.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-
- 4.0.0
- java-strings-3
- 0.1.0-SNAPSHOT
- jar
- java-strings-3
-
-
- com.baeldung
- parent-java
- 0.0.1-SNAPSHOT
- ../parent-java
-
-
-
-
- org.openjdk.jmh
- jmh-core
- ${jmh-core.version}
-
-
- org.openjdk.jmh
- jmh-generator-annprocess
- ${jmh-core.version}
-
-
- com.ibm.icu
- icu4j
- ${icu4j.version}
-
-
- com.google.guava
- guava
- ${guava.version}
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
- commons-io
- commons-io
- ${commons-io.version}
-
-
- commons-codec
- commons-codec
- ${commons-codec.version}
-
-
- junit
- junit
- ${junit.version}
- test
-
-
- org.hamcrest
- hamcrest-library
- ${org.hamcrest.version}
- test
-
-
- org.assertj
- assertj-core
- ${assertj.version}
- test
-
-
- org.bitbucket.cowwoc
- diff-match-patch
- 1.2
- test
-
-
-
-
- org.passay
- passay
- ${passay.version}
-
-
- org.apache.commons
- commons-text
- ${commons-text.version}
-
-
- com.vdurmont
- emoji-java
- ${emoji-java.version}
-
-
- org.ahocorasick
- ahocorasick
- ${ahocorasick.version}
-
-
- javax.validation
- validation-api
- ${validation-api.version}
-
-
- org.hibernate.validator
- hibernate-validator
- ${hibernate-validator.version}
-
-
- javax.el
- javax.el-api
- ${javax.el-api.version}
-
-
- org.glassfish.web
- javax.el
- ${javax.el.version}
-
-
-
-
- java-strings-3
-
-
- src/main/resources
- true
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
- ${java.version}
- ${java.version}
- -parameters
-
-
-
-
-
-
- 3.8.1
- 1.10
- 1.3.1
-
- 3.6.1
- 4.0.0
- 0.4.0
- 61.1
- 28.0-jre
- 1.4
- 2.0.0.Final
- 6.0.2.Final
- 3.0.0
- 2.2.6
-
-
-
\ No newline at end of file
diff --git a/java-strings-3/src/main/resources/.gitignore b/java-strings-3/src/main/resources/.gitignore
deleted file mode 100644
index 83c05e60c8..0000000000
--- a/java-strings-3/src/main/resources/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.class
-
-#folders#
-/target
-/neoDb*
-/data
-/src/main/webapp/WEB-INF/classes
-*/META-INF/*
-
-# Packaged files #
-*.jar
-*.war
-*.ear
\ No newline at end of file
diff --git a/java-strings-3/src/test/resources/.gitignore b/java-strings-3/src/test/resources/.gitignore
deleted file mode 100644
index 83c05e60c8..0000000000
--- a/java-strings-3/src/test/resources/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-*.class
-
-#folders#
-/target
-/neoDb*
-/data
-/src/main/webapp/WEB-INF/classes
-*/META-INF/*
-
-# Packaged files #
-*.jar
-*.war
-*.ear
\ No newline at end of file
diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md
index e35a3808f0..4c618585f3 100644
--- a/java-strings-ops/README.md
+++ b/java-strings-ops/README.md
@@ -3,10 +3,4 @@
This module contains articles about operations on strings in Java.
### Relevant Articles:
-- [Comparing Strings in Java](https://www.baeldung.com/java-compare-strings)
-- [Check If a String Is Numeric in Java](https://www.baeldung.com/java-check-string-number)
-- [Get Substring from String in Java](https://www.baeldung.com/java-substring)
- [Guide to Java String Pool](https://www.baeldung.com/java-string-pool)
-- [Split a String in Java](https://www.baeldung.com/java-split-string)
-- [Common String Operations in Java](https://www.baeldung.com/java-string-operations)
-- [Java toString() Method](https://www.baeldung.com/java-tostring)
diff --git a/java-strings/README.md b/java-strings/README.md
index e2ffbe6453..4668ad014e 100644
--- a/java-strings/README.md
+++ b/java-strings/README.md
@@ -3,10 +3,8 @@
This module contains articles about strings in Java.
### Relevant Articles:
-- [String Operations with Java Streams](https://www.baeldung.com/java-stream-operations-on-strings)
- [Use char[] Array Over a String for Manipulating Passwords in Java?](https://www.baeldung.com/java-storing-passwords)
- [Compact Strings in Java 9](https://www.baeldung.com/java-9-compact-string)
- [String Not Empty Test Assertions in Java](https://www.baeldung.com/java-assert-string-not-empty)
- [String Performance Hints](https://www.baeldung.com/java-string-performance)
-- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
- More articles: [[next -->]](/java-strings-2)
diff --git a/pom.xml b/pom.xml
index 14eb9e842e..f5776731c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -440,6 +440,8 @@
core-java-modules/core-java-sun
core-java-modules/core-java-string-conversions
core-java-modules/core-java-string-conversions-2
+ core-java-modules/core-java-string-operations
+ core-java-modules/core-java-string-operations-2
core-java-modules/core-java-string-algorithms
core-java-modules/core-java-string-algorithms-2
core-java-modules/core-java-string-apis
@@ -507,7 +509,6 @@
java-spi
java-strings
java-strings-2
- java-strings-3
java-strings-ops
java-vavr-stream
java-websocket
@@ -1211,6 +1212,8 @@
core-java-modules/core-java-sun
core-java-modules/core-java-string-conversions
core-java-modules/core-java-string-conversions-2
+ core-java-modules/core-java-string-operations
+ core-java-modules/core-java-string-operations-2
core-java-modules/core-java-string-algorithms
core-java-modules/core-java-string-algorithms-2
core-java-modules/core-java-string-apis
@@ -1276,7 +1279,6 @@
java-spi
java-strings
java-strings-2
- java-strings-3
java-strings-ops
java-vavr-stream
java-websocket