java/sql-dk/src/info/globalcode/sql/dk/Functions.java
branchv_0
changeset 46 0b05bc13aadd
parent 40 a9db7fb3ce65
child 51 6730214fab41
     1.1 --- a/java/sql-dk/src/info/globalcode/sql/dk/Functions.java	Tue Dec 24 00:12:53 2013 +0100
     1.2 +++ b/java/sql-dk/src/info/globalcode/sql/dk/Functions.java	Tue Dec 24 00:15:04 2013 +0100
     1.3 @@ -133,4 +133,29 @@
     1.4  		Arrays.fill(array, ch);
     1.5  		return new String(array);
     1.6  	}
     1.7 +
     1.8 +	/**
     1.9 +	 * @param original any text
    1.10 +	 * @return escaped text that can be used as part of an regular expression, matches the original
    1.11 +	 * text
    1.12 +	 */
    1.13 +	public static String escapeRegEx(String original) {
    1.14 +		StringBuilder escaped = new StringBuilder(original.length() * 3);
    1.15 +
    1.16 +		escaped.append("\\Q"); // start quotation
    1.17 +		for (int i = 0; i < original.length(); i++) {
    1.18 +			char ch = original.charAt(i);
    1.19 +			if (ch == 'E' && i > 0 && original.charAt(i - 1) == '\\') {
    1.20 +				escaped.append(ch); // this unintentionally ends quotation
    1.21 +				escaped.append("\\\\E"); // insert escaped \E (eaten before)
    1.22 +				escaped.append("\\Q"); // re-start quotation
    1.23 +			} else {
    1.24 +				escaped.append(ch);
    1.25 +			}
    1.26 +
    1.27 +		}
    1.28 +		escaped.append("\\E"); // end quotation
    1.29 +
    1.30 +		return escaped.toString();
    1.31 +	}
    1.32  }