diff --git a/core-java-modules/core-java-string-algorithms-2/README.md b/core-java-modules/core-java-string-algorithms-2/README.md
new file mode 100644
index 0000000000..2cd64e1920
--- /dev/null
+++ b/core-java-modules/core-java-string-algorithms-2/README.md
@@ -0,0 +1,16 @@
+## Java String Algorithms
+
+This module contains articles about string-related algorithms.
+
+### Relevant Articles:
+- [How to Remove the Last Character of a String?](https://www.baeldung.com/java-remove-last-character-of-string)
+- [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string)
+- [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex)
+- [Remove or Replace Part of a String in Java](https://www.baeldung.com/java-remove-replace-string-part)
+- [Replace a Character at a Specific Index in a String in Java](https://www.baeldung.com/java-replace-character-at-index)
+- [Join Array of Primitives with Separator in Java](https://www.baeldung.com/java-join-primitive-array)
+- [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string)
+- [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters)
+- [Counting Words in a String](https://www.baeldung.com/java-word-counting)
+- [Finding the Difference Between Two Strings](https://www.baeldung.com/java-difference-between-two-strings)
+- More articles: [[<-- prev]](../core-java-string-algorithms)
diff --git a/core-java-modules/core-java-string-algorithms-2/pom.xml b/core-java-modules/core-java-string-algorithms-2/pom.xml
new file mode 100644
index 0000000000..5b0e710bb8
--- /dev/null
+++ b/core-java-modules/core-java-string-algorithms-2/pom.xml
@@ -0,0 +1,67 @@
+
+ 4.0.0
+ core-java-string-algorithms-2
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-algorithms-2
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-core.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+ org.bitbucket.cowwoc
+ diff-match-patch
+ ${diff-match-path.version}
+ test
+
+
+
+
+ core-java-string-algorithms-2
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.8.1
+ 3.6.1
+ 1.2
+
+
+
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/AppendCharAtPositionX.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/addchar/AppendCharAtPositionX.java
similarity index 97%
rename from java-strings-ops/src/main/java/com/baeldung/string/AppendCharAtPositionX.java
rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/addchar/AppendCharAtPositionX.java
index ad203ab348..92bb9a9832 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/AppendCharAtPositionX.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/addchar/AppendCharAtPositionX.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.baeldung.string;
+package com.baeldung.addchar;
/**
* @author swpraman
diff --git a/java-strings-2/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/padding/StringPaddingUtil.java
similarity index 96%
rename from java-strings-2/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java
rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/padding/StringPaddingUtil.java
index 80d05bb42a..1de82620c0 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/padding/StringPaddingUtil.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/padding/StringPaddingUtil.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.padding;
+package com.baeldung.padding;
public class StringPaddingUtil {
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/StringHelper.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removelastchar/StringHelper.java
similarity index 95%
rename from java-strings-ops/src/main/java/com/baeldung/string/StringHelper.java
rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removelastchar/StringHelper.java
index dac0d1272e..ebcc283851 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/StringHelper.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removelastchar/StringHelper.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.removelastchar;
import java.util.Optional;
diff --git a/java-strings-2/src/main/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java
similarity index 97%
rename from java-strings-2/src/main/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java
rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java
index c9d748e897..386d34e0ac 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroes.java
@@ -1,9 +1,8 @@
-package com.baeldung.string.removeleadingtrailingchar;
+package com.baeldung.removeleadingtrailingchar;
-import org.apache.commons.lang3.StringUtils;
-
import com.google.common.base.CharMatcher;
+import org.apache.commons.lang3.StringUtils;
public class RemoveLeadingAndTrailingZeroes {
diff --git a/java-strings/src/main/java/com/baeldung/string/ReplaceCharacterInString.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/replacechar/ReplaceCharacterInString.java
similarity index 96%
rename from java-strings/src/main/java/com/baeldung/string/ReplaceCharacterInString.java
rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/replacechar/ReplaceCharacterInString.java
index 2cc67f0b51..29fb28a85b 100644
--- a/java-strings/src/main/java/com/baeldung/string/ReplaceCharacterInString.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/replacechar/ReplaceCharacterInString.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.replacechar;
public class ReplaceCharacterInString {
diff --git a/java-strings-3/src/main/java/com/baeldung/string/wordcount/WordCounter.java b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/wordcount/WordCounter.java
similarity index 97%
rename from java-strings-3/src/main/java/com/baeldung/string/wordcount/WordCounter.java
rename to core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/wordcount/WordCounter.java
index 30275773a6..9963c3486b 100644
--- a/java-strings-3/src/main/java/com/baeldung/string/wordcount/WordCounter.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/main/java/com/baeldung/wordcount/WordCounter.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.wordcount;
+package com.baeldung.wordcount;
import java.util.StringTokenizer;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/AppendCharAtPositionXUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/addchar/AppendCharAtPositionXUnitTest.java
similarity index 99%
rename from java-strings-ops/src/test/java/com/baeldung/string/AppendCharAtPositionXUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/addchar/AppendCharAtPositionXUnitTest.java
index 7c5409fe29..e850cf1954 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/AppendCharAtPositionXUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/addchar/AppendCharAtPositionXUnitTest.java
@@ -1,7 +1,7 @@
/**
*
*/
-package com.baeldung.string;
+package com.baeldung.addchar;
import static org.junit.Assert.assertEquals;
diff --git a/java-strings/src/test/java/com/baeldung/string/StringContainingCharactersUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/containchar/StringContainingCharactersUnitTest.java
similarity index 99%
rename from java-strings/src/test/java/com/baeldung/string/StringContainingCharactersUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/containchar/StringContainingCharactersUnitTest.java
index be79103e6b..3b0e545584 100644
--- a/java-strings/src/test/java/com/baeldung/string/StringContainingCharactersUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/containchar/StringContainingCharactersUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.containchar;
import org.junit.Test;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/StringFromPrimitiveArrayUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/join/StringFromPrimitiveArrayUnitTest.java
similarity index 99%
rename from java-strings-2/src/test/java/com/baeldung/string/StringFromPrimitiveArrayUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/join/StringFromPrimitiveArrayUnitTest.java
index c93089e543..f6c9141c3f 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/StringFromPrimitiveArrayUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/join/StringFromPrimitiveArrayUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.join;
import com.google.common.base.Joiner;
import com.google.common.primitives.Chars;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/padding/StringPaddingUtilUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/padding/StringPaddingUtilUnitTest.java
index f6a077a88e..d8ef500b30 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/padding/StringPaddingUtilUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/padding/StringPaddingUtilUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.padding;
+package com.baeldung.padding;
import com.google.common.base.Strings;
import org.apache.commons.lang3.StringUtils;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/StringHelperUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removelastchar/RemoveLastCharUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/StringHelperUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removelastchar/RemoveLastCharUnitTest.java
index eb86e84905..e88158deb9 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/StringHelperUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removelastchar/RemoveLastCharUnitTest.java
@@ -1,12 +1,12 @@
-package com.baeldung.string;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
+package com.baeldung.removelastchar;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
-public class StringHelperUnitTest {
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+public class RemoveLastCharUnitTest {
public static final String TEST_STRING = "abcdef";
public static final String NULL_STRING = null;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java
similarity index 99%
rename from java-strings-2/src/test/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java
index 55f932fea1..5dec58eea9 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/removeleadingtrailingchar/RemoveLeadingAndTrailingZeroesUnitTest.java
@@ -1,13 +1,13 @@
-package com.baeldung.string.removeleadingtrailingchar;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.stream.Stream;
+package com.baeldung.removeleadingtrailingchar;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
+import java.util.stream.Stream;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
public class RemoveLeadingAndTrailingZeroesUnitTest {
public static Stream leadingZeroTestProvider() {
diff --git a/java-strings/src/test/java/com/baeldung/string/ReplaceCharInStringUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replacechar/ReplaceCharInStringUnitTest.java
similarity index 92%
rename from java-strings/src/test/java/com/baeldung/string/ReplaceCharInStringUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replacechar/ReplaceCharInStringUnitTest.java
index c234c6953c..1e33a7f09d 100644
--- a/java-strings/src/test/java/com/baeldung/string/ReplaceCharInStringUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replacechar/ReplaceCharInStringUnitTest.java
@@ -1,8 +1,9 @@
-package com.baeldung.string;
+package com.baeldung.replacechar;
import org.junit.Test;
import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
public class ReplaceCharInStringUnitTest {
private ReplaceCharacterInString characterInString = new ReplaceCharacterInString();
diff --git a/java-strings/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replaceremove/StringReplaceAndRemoveUnitTest.java
similarity index 98%
rename from java-strings/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replaceremove/StringReplaceAndRemoveUnitTest.java
index 4d2b54241b..fe71aa6974 100644
--- a/java-strings/src/test/java/com/baeldung/string/StringReplaceAndRemoveUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/replaceremove/StringReplaceAndRemoveUnitTest.java
@@ -1,7 +1,7 @@
-package com.baeldung.string;
+package com.baeldung.replaceremove;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.RegExUtils;
+import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java
similarity index 100%
rename from java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java
diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java
similarity index 100%
rename from java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java
diff --git a/java-strings-3/src/test/java/com/baeldung/string/wordcount/WordCountUnitTest.java b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/wordcount/WordCountUnitTest.java
similarity index 97%
rename from java-strings-3/src/test/java/com/baeldung/string/wordcount/WordCountUnitTest.java
rename to core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/wordcount/WordCountUnitTest.java
index fdd045978f..bdfee61d5a 100644
--- a/java-strings-3/src/test/java/com/baeldung/string/wordcount/WordCountUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms-2/src/test/java/com/baeldung/wordcount/WordCountUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.wordcount;
+package com.baeldung.wordcount;
import static org.junit.Assert.assertEquals;
diff --git a/core-java-modules/core-java-string-algorithms/README.md b/core-java-modules/core-java-string-algorithms/README.md
new file mode 100644
index 0000000000..70a4b5ffaf
--- /dev/null
+++ b/core-java-modules/core-java-string-algorithms/README.md
@@ -0,0 +1,16 @@
+## Java String Algorithms
+
+This module contains articles about string-related algorithms.
+
+### Relevant Articles:
+- [Check If a String Is a Palindrome](https://www.baeldung.com/java-palindrome)
+- [Count Occurrences of a Char in a String](https://www.baeldung.com/java-count-chars)
+- [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences)
+- [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords)
+- [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char)
+- [How to Reverse a String in Java](https://www.baeldung.com/java-reverse-string)
+- [Check If a String Is a Pangram in Java](https://www.baeldung.com/java-string-pangram)
+- [Check If a String Contains Multiple Keywords](https://www.baeldung.com/string-contains-multiple-words)
+- [Checking If a String Is a Repeated Substring](https://www.baeldung.com/java-repeated-substring)
+- [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis)
+- More articles: [[next -->]](../core-java-string-algorithms-2)
diff --git a/core-java-modules/core-java-string-algorithms/pom.xml b/core-java-modules/core-java-string-algorithms/pom.xml
new file mode 100644
index 0000000000..f1b7499b6d
--- /dev/null
+++ b/core-java-modules/core-java-string-algorithms/pom.xml
@@ -0,0 +1,73 @@
+
+ 4.0.0
+ core-java-string-algorithms
+ 0.1.0-SNAPSHOT
+ jar
+ core-java-string-algorithms
+
+
+ com.baeldung
+ parent-java
+ 0.0.1-SNAPSHOT
+ ../../parent-java
+
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+ org.ahocorasick
+ ahocorasick
+ ${ahocorasick.version}
+
+
+ org.openjdk.jmh
+ jmh-core
+ ${jmh-core.version}
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ ${jmh-core.version}
+
+
+ com.vdurmont
+ emoji-java
+ ${emoji-java.version}
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+ test
+
+
+
+
+ core-java-string-algorithms
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ 3.8.1
+ 27.0.1-jre
+ 0.4.0
+ 3.6.1
+ 4.0.0
+
+
+
diff --git a/java-strings-2/src/main/java/com/baeldung/string/MatchWords.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/matchwords/MatchWords.java
similarity index 92%
rename from java-strings-2/src/main/java/com/baeldung/string/MatchWords.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/matchwords/MatchWords.java
index 0cad52c320..b5b7e92d8e 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/MatchWords.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/matchwords/MatchWords.java
@@ -1,14 +1,12 @@
-package com.baeldung.string;
+package com.baeldung.matchwords;
import org.ahocorasick.trie.Emit;
-import org.ahocorasick.trie.Token;
import org.ahocorasick.trie.Trie;
-import java.util.*;
-import java.util.function.Function;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
public class MatchWords {
diff --git a/java-strings-ops/src/main/java/com/baeldung/string/Palindrome.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/palindrom/Palindrome.java
similarity index 98%
rename from java-strings-ops/src/main/java/com/baeldung/string/Palindrome.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/palindrom/Palindrome.java
index 97d4d36d07..4a98e6583a 100644
--- a/java-strings-ops/src/main/java/com/baeldung/string/Palindrome.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/palindrom/Palindrome.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.palindrom;
import java.util.stream.IntStream;
diff --git a/java-strings-2/src/main/java/com/baeldung/string/Pangram.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/pangram/Pangram.java
similarity index 98%
rename from java-strings-2/src/main/java/com/baeldung/string/Pangram.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/pangram/Pangram.java
index c09b0c1d29..ca2a44280c 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/Pangram.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/pangram/Pangram.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.pangram;
import java.util.Arrays;
import java.util.Map;
diff --git a/java-strings-2/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/removeduplicates/RemoveDuplicateFromString.java
similarity index 98%
rename from java-strings-2/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/removeduplicates/RemoveDuplicateFromString.java
index d8fd9c4b14..a000f4dbd6 100644
--- a/java-strings-2/src/main/java/com/baeldung/stringduplicates/RemoveDuplicateFromString.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/removeduplicates/RemoveDuplicateFromString.java
@@ -1,4 +1,4 @@
-package com.baeldung.stringduplicates;
+package com.baeldung.removeduplicates;
import java.util.Arrays;
import java.util.HashSet;
diff --git a/java-strings-2/src/main/java/com/baeldung/string/repetition/SubstringRepetition.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/repetition/SubstringRepetition.java
similarity index 94%
rename from java-strings-2/src/main/java/com/baeldung/string/repetition/SubstringRepetition.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/repetition/SubstringRepetition.java
index 466ce9146b..6715367a19 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/repetition/SubstringRepetition.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/repetition/SubstringRepetition.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.repetition;
+package com.baeldung.repetition;
public class SubstringRepetition {
diff --git a/java-strings-2/src/main/java/com/baeldung/string/reverse/ReverseStringExamples.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/reverse/ReverseStringExamples.java
similarity index 97%
rename from java-strings-2/src/main/java/com/baeldung/string/reverse/ReverseStringExamples.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/reverse/ReverseStringExamples.java
index 1a58d09598..5236f14ccd 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/reverse/ReverseStringExamples.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/reverse/ReverseStringExamples.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.reverse;
+package com.baeldung.reverse;
import org.apache.commons.lang3.StringUtils;
diff --git a/java-strings/src/main/java/com/baeldung/string/searching/WordIndexer.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/searching/WordIndexer.java
similarity index 96%
rename from java-strings/src/main/java/com/baeldung/string/searching/WordIndexer.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/searching/WordIndexer.java
index 1bcad6dd32..c7550f8e16 100644
--- a/java-strings/src/main/java/com/baeldung/string/searching/WordIndexer.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/searching/WordIndexer.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.searching;
+package com.baeldung.searching;
import java.util.ArrayList;
import java.util.List;
diff --git a/java-strings-2/src/main/java/com/baeldung/string/performance/RemovingStopwordsPerformanceComparison.java b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/stopwords/RemovingStopwordsPerformanceComparison.java
similarity index 82%
rename from java-strings-2/src/main/java/com/baeldung/string/performance/RemovingStopwordsPerformanceComparison.java
rename to core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/stopwords/RemovingStopwordsPerformanceComparison.java
index 5b455459cd..7df64de3f1 100644
--- a/java-strings-2/src/main/java/com/baeldung/string/performance/RemovingStopwordsPerformanceComparison.java
+++ b/core-java-modules/core-java-string-algorithms/src/main/java/com/baeldung/stopwords/RemovingStopwordsPerformanceComparison.java
@@ -1,4 +1,6 @@
-package com.baeldung.string.performance;
+package com.baeldung.stopwords;
+
+import org.openjdk.jmh.annotations.*;
import java.io.IOException;
import java.nio.file.Files;
@@ -9,15 +11,6 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-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;
-
@Fork(value = 3, warmups = 1)
@State(Scope.Benchmark)
diff --git a/java-strings-2/src/main/resources/english_stopwords.txt b/core-java-modules/core-java-string-algorithms/src/main/resources/english_stopwords.txt
similarity index 100%
rename from java-strings-2/src/main/resources/english_stopwords.txt
rename to core-java-modules/core-java-string-algorithms/src/main/resources/english_stopwords.txt
diff --git a/java-strings-2/src/main/resources/shakespeare-hamlet.txt b/core-java-modules/core-java-string-algorithms/src/main/resources/shakespeare-hamlet.txt
similarity index 100%
rename from java-strings-2/src/main/resources/shakespeare-hamlet.txt
rename to core-java-modules/core-java-string-algorithms/src/main/resources/shakespeare-hamlet.txt
diff --git a/java-strings-ops/src/test/java/com/baeldung/java/countingChars/CountCharsExampleUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/countingchars/CountCharsExampleUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/java/countingChars/CountCharsExampleUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/countingchars/CountCharsExampleUnitTest.java
index d58684445b..8a5f1181b5 100644
--- a/java-strings-ops/src/test/java/com/baeldung/java/countingChars/CountCharsExampleUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/countingchars/CountCharsExampleUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.java.countingChars;
+package com.baeldung.countingchars;
import static org.junit.Assert.assertEquals;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/MatchWordsUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/matchwords/MatchWordsUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/MatchWordsUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/matchwords/MatchWordsUnitTest.java
index 385aadaa5d..9ff1066a12 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/MatchWordsUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/matchwords/MatchWordsUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.matchwords;
import org.junit.Test;
diff --git a/java-strings-ops/src/test/java/com/baeldung/string/PalindromeUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/palindrom/PalindromeUnitTest.java
similarity index 98%
rename from java-strings-ops/src/test/java/com/baeldung/string/PalindromeUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/palindrom/PalindromeUnitTest.java
index 8dea72d8ca..43334ad0fd 100644
--- a/java-strings-ops/src/test/java/com/baeldung/string/PalindromeUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/palindrom/PalindromeUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string;
+package com.baeldung.palindrom;
import static org.junit.Assert.assertTrue;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/PangramUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/pangram/PangramUnitTest.java
similarity index 97%
rename from java-strings-2/src/test/java/com/baeldung/string/PangramUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/pangram/PangramUnitTest.java
index 36e603b535..b081a425e2 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/PangramUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/pangram/PangramUnitTest.java
@@ -1,8 +1,9 @@
-package com.baeldung.string;
+package com.baeldung.pangram;
+
+import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import org.junit.Test;
public class PangramUnitTest {
diff --git a/java-strings-2/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeduplicates/RemoveDuplicateFromStringUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeduplicates/RemoveDuplicateFromStringUnitTest.java
index 895ecc4a3b..2372a5e569 100644
--- a/java-strings-2/src/test/java/com/baeldung/stringduplicates/RemoveDuplicateFromStringUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeduplicates/RemoveDuplicateFromStringUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.stringduplicates;
+package com.baeldung.removeduplicates;
import org.junit.Assert;
import org.junit.Before;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/RemovingEmojiFromStringUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeemojis/RemovingEmojiFromStringUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/RemovingEmojiFromStringUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeemojis/RemovingEmojiFromStringUnitTest.java
index 8688f9dcf5..2c5f83400e 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/RemovingEmojiFromStringUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/removeemojis/RemovingEmojiFromStringUnitTest.java
@@ -1,13 +1,12 @@
-package com.baeldung.string;
+package com.baeldung.removeemojis;
-import static org.junit.Assert.assertEquals;
+import com.vdurmont.emoji.EmojiParser;
+import org.junit.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.junit.Test;
-
-import com.vdurmont.emoji.EmojiParser;
+import static org.junit.Assert.assertEquals;
public class RemovingEmojiFromStringUnitTest {
String text = "la conférence, commencera à 10 heures 😅";
diff --git a/java-strings-2/src/test/java/com/baeldung/string/repetition/SubstringRepetitionUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/repetition/SubstringRepetitionUnitTest.java
similarity index 93%
rename from java-strings-2/src/test/java/com/baeldung/string/repetition/SubstringRepetitionUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/repetition/SubstringRepetitionUnitTest.java
index f382a24a7f..5ecb7315c2 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/repetition/SubstringRepetitionUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/repetition/SubstringRepetitionUnitTest.java
@@ -1,10 +1,10 @@
-package com.baeldung.string.repetition;
-
-import static com.baeldung.string.repetition.SubstringRepetition.*;
-import static org.junit.Assert.*;
+package com.baeldung.repetition;
import org.junit.Test;
+import static com.baeldung.repetition.SubstringRepetition.*;
+import static org.junit.Assert.*;
+
public class SubstringRepetitionUnitTest {
private String validString = "aa";
diff --git a/java-strings-2/src/test/java/com/baeldung/string/reverse/ReverseStringExamplesUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/reverse/ReverseStringExamplesUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/reverse/ReverseStringExamplesUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/reverse/ReverseStringExamplesUnitTest.java
index 020ead02db..c122163174 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/reverse/ReverseStringExamplesUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/reverse/ReverseStringExamplesUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.reverse;
+package com.baeldung.reverse;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
diff --git a/java-strings/src/test/java/com/baeldung/string/searching/WordIndexerUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/searching/WordIndexerUnitTest.java
similarity index 98%
rename from java-strings/src/test/java/com/baeldung/string/searching/WordIndexerUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/searching/WordIndexerUnitTest.java
index f3f76db01f..774d5a2121 100644
--- a/java-strings/src/test/java/com/baeldung/string/searching/WordIndexerUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/searching/WordIndexerUnitTest.java
@@ -1,4 +1,4 @@
-package com.baeldung.string.searching;
+package com.baeldung.searching;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/java-strings-2/src/test/java/com/baeldung/string/RemoveStopwordsUnitTest.java b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/stopwords/RemoveStopwordsUnitTest.java
similarity index 98%
rename from java-strings-2/src/test/java/com/baeldung/string/RemoveStopwordsUnitTest.java
rename to core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/stopwords/RemoveStopwordsUnitTest.java
index edda2ec9d7..d90a70a9f5 100644
--- a/java-strings-2/src/test/java/com/baeldung/string/RemoveStopwordsUnitTest.java
+++ b/core-java-modules/core-java-string-algorithms/src/test/java/com/baeldung/stopwords/RemoveStopwordsUnitTest.java
@@ -1,6 +1,7 @@
-package com.baeldung.string;
+package com.baeldung.stopwords;
-import static org.junit.Assert.assertEquals;
+import org.junit.BeforeClass;
+import org.junit.Test;
import java.io.IOException;
import java.nio.file.Files;
@@ -10,8 +11,7 @@ import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
public class RemoveStopwordsUnitTest {
final String original = "The quick brown fox jumps over the lazy dog";
diff --git a/java-strings-2/README.md b/java-strings-2/README.md
index ced813163d..b97df7c969 100644
--- a/java-strings-2/README.md
+++ b/java-strings-2/README.md
@@ -6,22 +6,12 @@ This module contains articles about strings in Java.
- [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)
-- [Removing Stopwords from a String in Java](https://www.baeldung.com/java-string-remove-stopwords)
- [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)
-- [Removing Repeated Characters from a String](https://www.baeldung.com/java-remove-repeated-char)
-- [Join Array of Primitives with Separator in Java](https://www.baeldung.com/java-join-primitive-array)
-- [Pad a String with Zeros or Spaces in Java](https://www.baeldung.com/java-pad-string)
-- [Remove Emojis from a Java String](https://www.baeldung.com/java-string-remove-emojis)
-- [Remove Leading and Trailing Characters from a String](https://www.baeldung.com/java-remove-trailing-characters)
- [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)
-- [Check if a String is a Pangram in Java](https://www.baeldung.com/java-string-pangram)
-- [Check If a String Contains Multiple Keywords](https://www.baeldung.com/string-contains-multiple-words)
- [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)
-- [Checking If a String Is a Repeated Substring](https://www.baeldung.com/java-repeated-substring)
-- [How to Reverse a String in Java](https://www.baeldung.com/java-reverse-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)
diff --git a/java-strings-3/README.md b/java-strings-3/README.md
index 6276dfc621..721ea5523b 100644
--- a/java-strings-3/README.md
+++ b/java-strings-3/README.md
@@ -4,6 +4,4 @@ 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](https://www.baeldung.com/java-difference-between-two-strings)
-- [Counting Words in a String](https://www.baeldung.com/java-word-counting)
- More articles: [[<-- prev>]](/java-strings-2)
diff --git a/java-strings-ops/README.md b/java-strings-ops/README.md
index 1300cf028e..e35a3808f0 100644
--- a/java-strings-ops/README.md
+++ b/java-strings-ops/README.md
@@ -3,13 +3,9 @@
This module contains articles about operations on strings in Java.
### Relevant Articles:
-- [Check If a String Is a Palindrome](https://www.baeldung.com/java-palindrome)
- [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)
-- [How to Remove the Last Character of a String?](https://www.baeldung.com/java-remove-last-character-of-string)
-- [Add a Character to a String at a Given Position](https://www.baeldung.com/java-add-character-to-string)
-- [Count Occurrences of a Char in a String](https://www.baeldung.com/java-count-chars)
- [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)
diff --git a/java-strings-ops/pom.xml b/java-strings-ops/pom.xml
index b6a7ea2728..ebed216c2b 100644
--- a/java-strings-ops/pom.xml
+++ b/java-strings-ops/pom.xml
@@ -90,9 +90,9 @@
3.8.1
+ 27.0.1-jre
3.6.1
- 27.0.1-jre
5.3.1
diff --git a/java-strings/README.md b/java-strings/README.md
index 17b74231a4..e2ffbe6453 100644
--- a/java-strings/README.md
+++ b/java-strings/README.md
@@ -6,11 +6,7 @@ This module contains articles about strings in Java.
- [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)
-- [Java Check a String for Lowercase/Uppercase Letter, Special Character and Digit](https://www.baeldung.com/java-lowercase-uppercase-special-character-digit-regex)
- [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)
-- [Using indexOf to Find All Occurrences of a Word in a String](https://www.baeldung.com/java-indexOf-find-string-occurrences)
- [Adding a Newline Character to a String in Java](https://www.baeldung.com/java-string-newline)
-- [Remove or Replace Part of a String in Java](https://www.baeldung.com/java-remove-replace-string-part)
-- [Replace a Character at a Specific Index in a String in Java](https://www.baeldung.com/java-replace-character-at-index)
- More articles: [[next -->]](/java-strings-2)
diff --git a/pom.xml b/pom.xml
index f9e45f5c93..58a6d8bee0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -437,6 +437,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-algorithms
+ core-java-modules/core-java-string-algorithms-2
core-java-modules/core-java-string-apis
core-java-modules/core-java
core-java-modules/core-java-jvm
@@ -1205,6 +1207,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-algorithms
+ core-java-modules/core-java-string-algorithms-2
core-java-modules/core-java-string-apis
core-scala
couchbase