java/sql-dk/src/info/globalcode/sql/dk/Functions.java
branchv_0
changeset 46 0b05bc13aadd
parent 40 a9db7fb3ce65
child 51 6730214fab41
--- a/java/sql-dk/src/info/globalcode/sql/dk/Functions.java	Tue Dec 24 00:12:53 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/Functions.java	Tue Dec 24 00:15:04 2013 +0100
@@ -133,4 +133,29 @@
 		Arrays.fill(array, ch);
 		return new String(array);
 	}
+
+	/**
+	 * @param original any text
+	 * @return escaped text that can be used as part of an regular expression, matches the original
+	 * text
+	 */
+	public static String escapeRegEx(String original) {
+		StringBuilder escaped = new StringBuilder(original.length() * 3);
+
+		escaped.append("\\Q"); // start quotation
+		for (int i = 0; i < original.length(); i++) {
+			char ch = original.charAt(i);
+			if (ch == 'E' && i > 0 && original.charAt(i - 1) == '\\') {
+				escaped.append(ch); // this unintentionally ends quotation
+				escaped.append("\\\\E"); // insert escaped \E (eaten before)
+				escaped.append("\\Q"); // re-start quotation
+			} else {
+				escaped.append(ch);
+			}
+
+		}
+		escaped.append("\\E"); // end quotation
+
+		return escaped.toString();
+	}
 }