diff --git a/core-java/src/main/java/com/baeldung/regexp/EscapingChars.java b/core-java/src/main/java/com/baeldung/regexp/EscapingChars.java new file mode 100644 index 0000000000..3268339a15 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/regexp/EscapingChars.java @@ -0,0 +1,25 @@ +package com.baeldung.regexp; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class EscapingChars { + public boolean isMatching(String input, String pattern) { + return input.matches(pattern); + } + + public int splitAndCountWords(String input, String pattern) { + return input.split(pattern).length; + } + + public int splitAndCountWordsUsingQuoteMethod(String input, String pattern) { + return input.split(Pattern.quote(pattern)).length; + } + + public String changeCurrencySymbol(String input, String pattern, + String correctStr) { + Pattern p = Pattern.compile(pattern); + Matcher m = p.matcher(input); + return m.replaceAll(correctStr); + } +} diff --git a/core-java/src/test/java/com/baeldung/regexp/EscapingCharsManualTest.java b/core-java/src/test/java/com/baeldung/regexp/EscapingCharsManualTest.java new file mode 100644 index 0000000000..60281fda7a --- /dev/null +++ b/core-java/src/test/java/com/baeldung/regexp/EscapingCharsManualTest.java @@ -0,0 +1,70 @@ +package com.baeldung.regexp; + +import static junit.framework.TestCase.assertEquals; + +import org.junit.Test; + +public class EscapingCharsManualTest { + @Test + public void givenRegexWithDot_whenMatchingStr_thenMatches() { + String strInput = "foof"; + String strRegex = "foo."; + EscapingChars e = new EscapingChars(); + + assertEquals(true, e.isMatching(strInput, strRegex)); + } + + @Test + public void givenRegexWithDotEsc_whenMatchingStr_thenNotMatching() { + String strInput = "foof"; + String strRegex = "foo\\."; + EscapingChars e = new EscapingChars(); + + assertEquals(false, e.isMatching(strInput, strRegex)); + } + + @Test + public void givenRegexWithPipeEscaped_whenSplitStr_thenSplits() { + String strInput = "foo|bar|hello|world"; + String strRegex = "\\Q|\\E"; + EscapingChars e = new EscapingChars(); + + assertEquals(4, e.splitAndCountWords(strInput, strRegex)); + } + + @Test + public void givenRegexWithPipeEscQuoteMeth_whenSplitStr_thenSplits() { + String strInput = "foo|bar|hello|world"; + String strRegex = "|"; + EscapingChars e = new EscapingChars(); + + assertEquals(4, + e.splitAndCountWordsUsingQuoteMethod(strInput, strRegex)); + } + + @Test + public void givenRegexWithDollar_whenReplacing_thenNotReplace() { + String strInput = "I gave $50 to my brother." + + "He bought candy for $35. Now he has $15 left."; + String strRegex = "$"; + String strReplacement = "£"; + String output = "I gave £50 to my brother." + + "He bought candy for £35. Now he has £15 left."; + EscapingChars e = new EscapingChars(); + + assertEquals(output, + e.changeCurrencySymbol(strInput, strRegex, strReplacement)); + } + + @Test + public void givenRegexWithDollarEsc_whenReplacing_thenReplace() { + String strInput = "I gave $50 to my brother. He bought candy for $35. Now he has $15 left."; + String strRegex = "\\$"; + String strReplacement = "£"; + String output = "I gave £50 to my brother. He bought candy for £35. Now he has £15 left."; + EscapingChars e = new EscapingChars(); + + assertEquals(output, + e.changeCurrencySymbol(strInput, strRegex, strReplacement)); + } +}