Java/Data Type/String Escape
Содержание
- 1 Ends With Ignore Case
- 2 Escape commas in the string using the default escape char
- 3 Escapes characters that have special meaning to regular expressions
- 4 Quote string
- 5 Removes the double quote from the start and end of the supplied string if it starts and ends with this character
- 6 unEscape String
- 7 Unquote string
Ends With Ignore Case
<source lang="java">
// // Copyright 2004-2005 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //
// /** Fast String Utilities.
* * These string utilities provide both conveniance methods and * performance improvements over most standard library versions. The * main aim of the optimizations is to avoid object creation unless * absolutely required. * * @author Greg Wilkins (gregw) */
class StringUtil {
public static final String CRLF="\015\012"; public static final String __LINE_SEPARATOR= System.getProperty("line.separator","\n"); public static String __ISO_8859_1; static { String iso=System.getProperty("ISO_8859_1"); if (iso!=null) __ISO_8859_1=iso; else { try{ new String(new byte[]{(byte)20},"ISO-8859-1"); __ISO_8859_1="ISO-8859-1"; } catch(java.io.UnsupportedEncodingException e) { __ISO_8859_1="ISO8859_1"; } } } public final static String __UTF8="UTF-8"; private static char[] lowercases = { "\000","\001","\002","\003","\004","\005","\006","\007", "\010","\011","\012","\013","\014","\015","\016","\017", "\020","\021","\022","\023","\024","\025","\026","\027", "\030","\031","\032","\033","\034","\035","\036","\037", "\040","\041","\042","\043","\044","\045","\046","\047", "\050","\051","\052","\053","\054","\055","\056","\057", "\060","\061","\062","\063","\064","\065","\066","\067", "\070","\071","\072","\073","\074","\075","\076","\077", "\100","\141","\142","\143","\144","\145","\146","\147", "\150","\151","\152","\153","\154","\155","\156","\157", "\160","\161","\162","\163","\164","\165","\166","\167", "\170","\171","\172","\133","\134","\135","\136","\137", "\140","\141","\142","\143","\144","\145","\146","\147", "\150","\151","\152","\153","\154","\155","\156","\157", "\160","\161","\162","\163","\164","\165","\166","\167", "\170","\171","\172","\173","\174","\175","\176","\177" }; /* ------------------------------------------------------------ */ public static boolean endsWithIgnoreCase(String s,String w) { if (w==null) return true; if (s==null) return false; int sl=s.length(); int wl=w.length(); if (sl<wl) return false; for (int i=wl;i-->0;) { char c1=s.charAt(--sl); char c2=w.charAt(i); if (c1!=c2) { if (c1<=127) c1=lowercases[c1]; if (c2<=127) c2=lowercases[c2]; if (c1!=c2) return false; } } return true; }
}
</source>
Escape commas in the string using the default escape char
<source lang="java">
/**
* Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
import java.io.PrintWriter; import java.io.StringWriter; import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; import java.net.UnknownHostException; import java.text.DateFormat; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.StringTokenizer; import java.util.Collection;
/**
* General string utils */
public class StringUtils {
final public static char COMMA = ","; final public static String COMMA_STR = ","; final public static char ESCAPE_CHAR = "\\"; /** * Escape commas in the string using the default escape char * @param str a string * @return an escaped string */ public static String escapeString(String str) { return escapeString(str, ESCAPE_CHAR, COMMA); } /** * EscapecharToEscape
in the string * with the escape charescapeChar
* * @param str string * @param escapeChar escape char * @param charToEscape the char to be escaped * @return an escaped string */ public static String escapeString(String str, char escapeChar, char charToEscape) { if (str == null) { return null; } StringBuilder result = new StringBuilder(); for (int i=0; i<str.length(); i++) { char curChar = str.charAt(i); if (curChar == escapeChar || curChar == charToEscape) { // special char result.append(escapeChar); } result.append(curChar); } return result.toString(); }
}
</source>
Escapes characters that have special meaning to regular expressions
<source lang="java">
/*
* Static String formatting and query routines. * Copyright (C) 2001-2005 Stephen Ostermiller * http://ostermiller.org/contact.pl?regarding=Java+Utilities * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See COPYING.TXT for details. */
import java.util.HashMap; import java.util.regex.Pattern; /**
* Utilities for String formatting, manipulation, and queries. * More information about this class is available from . * * @author Stephen Ostermiller http://ostermiller.org/contact.pl?regarding=Java+Utilities * @since ostermillerutils 1.00.00 */
public class StringHelper {
/** * Escapes characters that have special meaning to * regular expressions * * @param s String to be escaped * @return escaped String * @throws NullPointerException if s is null. * * @since ostermillerutils 1.02.25 */ public static String escapeRegularExpressionLiteral(String s){ // According to the documentation in the Pattern class: // // The backslash character ("\") serves to introduce escaped constructs, // as defined in the table above, as well as to quote characters that // otherwise would be interpreted as unescaped constructs. Thus the // expression \\ matches a single backslash and \{ matches a left brace. // // It is an error to use a backslash prior to any alphabetic character // that does not denote an escaped construct; these are reserved for future // extensions to the regular-expression language. A backslash may be used // prior to a non-alphabetic character regardless of whether that character // is part of an unescaped construct. // // As a result, escape everything except [0-9a-zA-Z] int length = s.length(); int newLength = length; // first check for characters that might // be dangerous and calculate a length // of the string that has escapes. for (int i=0; i<length; i++){ char c = s.charAt(i); if (!((c>="0" && c<="9") || (c>="A" && c<="Z") || (c>="a" && c<="z"))){ newLength += 1; } } if (length == newLength){ // nothing to escape in the string return s; } StringBuffer sb = new StringBuffer(newLength); for (int i=0; i<length; i++){ char c = s.charAt(i); if (!((c>="0" && c<="9") || (c>="A" && c<="Z") || (c>="a" && c<="z"))){ sb.append("\\"); } sb.append(c); } return sb.toString(); }
}
</source>
Quote string
<source lang="java">
/*
* soapUI, copyright (C) 2004-2009 eviware.ru * * soapUI is free software; you can redistribute it and/or modify it under the * terms of version 2.1 of the GNU Lesser General Public License as published by * the Free Software Foundation. * * soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details at gnu.org. */
public class Utils {
public static String quote( String str ) { if( str == null ) return str; if( str.length() < 2 || !str.startsWith( "\"" ) || !str.endsWith( "\"" ) ) str = "\"" + str + "\""; return str; }
}
</source>
Removes the double quote from the start and end of the supplied string if it starts and ends with this character
<source lang="java">
/*
* Copyright Aduna (http://www.aduna-software.ru/) (c) 1997-2006. * * Licensed under the Aduna BSD-style license. */
public class StringUtil {
/** * Removes the double quote from the start and end of the supplied string if * it starts and ends with this character. This method does not create a new * string if text doesn"t start and end with double quotes, the * text object itself is returned in that case. * * @param text * The string to remove the double quotes from. * @return The trimmed string, or a reference to text if it did * not start and end with double quotes. */ public static String trimDoubleQuotes(String text) { int textLength = text.length(); if (textLength >= 2 && text.charAt(0) == """ && text.charAt(textLength - 1) == """) { return text.substring(1, textLength - 1); } return text; }
} // end class
</source>
unEscape String
<source lang="java">
/**
* Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
import java.io.PrintWriter; import java.io.StringWriter; import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; import java.net.UnknownHostException; import java.text.DateFormat; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.StringTokenizer; import java.util.Collection;
/**
* General string utils */
public class StringUtils {
/** * UnescapecharToEscape
in the string * with the escape charescapeChar
* * @param str string * @param escapeChar escape char * @param charToEscape the escaped char * @return an unescaped string */ public static String unEscapeString( String str, char escapeChar, char charToEscape) { if (str == null) { return null; } StringBuilder result = new StringBuilder(str.length()); boolean hasPreEscape = false; for (int i=0; i<str.length(); i++) { char curChar = str.charAt(i); if (hasPreEscape) { if (curChar != escapeChar && curChar != charToEscape) { // no special char throw new IllegalArgumentException("Illegal escaped string " + str + " unescaped " + escapeChar + " at " + (i-1)); } // otherwise discard the escape char result.append(curChar); hasPreEscape = false; } else { if (curChar == charToEscape) { throw new IllegalArgumentException("Illegal escaped string " + str + " unescaped " + charToEscape + " at " + i); } else if (curChar == escapeChar) { hasPreEscape = true; } else { result.append(curChar); } } } if (hasPreEscape ) { throw new IllegalArgumentException("Illegal escaped string " + str + ", not expecting " + charToEscape + " in the end." ); } return result.toString(); }
}
</source>
Unquote string
<source lang="java">
/*
* soapUI, copyright (C) 2004-2009 eviware.ru * * soapUI is free software; you can redistribute it and/or modify it under the * terms of version 2.1 of the GNU Lesser General Public License as published by * the Free Software Foundation. * * soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details at gnu.org. */
public class Utils {
public static String unquote( String str ) { int length = str == null ? -1 : str.length(); if( str == null || length == 0 ) return str; if( length > 1 && str.charAt( 0 ) == "\"" && str.charAt( length - 1 ) == "\"" ) { str = str.substring( 1, length - 1 ); } return str; }
}
</source>