/*******************************************************************************
* Copyright (c) 2007 Cambridge Semantics Incorporated.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cambridge Semantics Incorporated
*******************************************************************************/
package org.openanzo.rdf.utils;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
/**
* String escaping utilities
*
*/
public class StringEscapeUtils {
/**
* Escape a regex expression
*
* @param string
* expression to escape
* @return escaped expression
*/
public static String escapeRegex(String string) {
StringBuilder result = new StringBuilder();
StringCharacterIterator iter = new StringCharacterIterator(string);
char c = iter.current();
while (c != CharacterIterator.DONE) {
switch (c) {
case '.':
result.append("\\.");
break;
case '\\':
result.append("\\\\");
break;
case '?':
result.append("\\?");
break;
case '*':
result.append("\\*");
break;
case '+':
result.append("\\+");
break;
case '&':
result.append("\\&");
break;
case ':':
result.append("\\:");
break;
case '{':
result.append("\\{");
break;
case '}':
result.append("\\}");
break;
case '[':
result.append("\\[");
break;
case ']':
result.append("\\]");
break;
case '(':
result.append("\\(");
break;
case ')':
result.append("\\)");
break;
case '^':
result.append("\\^");
break;
case '$':
result.append("\\$");
break;
default:
result.append(c);
}
c = iter.next();
}
return result.toString();
}
}