📄 stringhelper.java
字号:
//$Id: StringHelper.java,v 1.16.2.8 2003/11/29 07:55:15 oneovthafew Exp $package net.sf.hibernate.util;import java.util.Iterator;import java.util.StringTokenizer;public final class StringHelper { public static final String EMPTY_STRING=""; public static final char DOT='.'; public static final char UNDERSCORE='_'; public static final String COMMA_SPACE=", "; public static final String COMMA = ","; public static final String OPEN_PAREN = "("; public static final String CLOSE_PAREN = ")"; public static final char SINGLE_QUOTE = '\''; public static String join(String seperator, String[] strings) { int length = strings.length; if (length==0) return EMPTY_STRING; StringBuffer buf = new StringBuffer( length * strings[0].length() ) .append(strings[0]); for (int i=1; i<length; i++) { buf.append(seperator).append(strings[i]); } return buf.toString(); } public static String join(String seperator, Iterator objects) { StringBuffer buf = new StringBuffer(); buf.append( objects.next() ); while ( objects.hasNext() ) { buf.append(seperator).append( objects.next() ); } return buf.toString(); } public static String[] add(String[] x, String sep, String[] y) { String[] result = new String[ x.length ]; for ( int i=0; i<x.length; i++ ) { result[i] = x[i] + sep + y[i]; } return result; } public static String repeat(String string, int times) { StringBuffer buf = new StringBuffer( string.length() * times ); for (int i=0; i<times; i++) buf.append(string); return buf.toString(); } public static String replace(String template, String placeholder, String replacement) { return replace(template, placeholder, replacement, false); } public static String replace(String template, String placeholder, String replacement, boolean wholeWords) { int loc = template.indexOf(placeholder); if (loc<0) { return template; } else { String actualReplace = !wholeWords || !Character.isJavaIdentifierPart( template.charAt( loc + placeholder.length() ) ) ? replacement : placeholder; return new StringBuffer( template.substring(0, loc) ) .append(actualReplace) .append( replace( template.substring( loc + placeholder.length() ), placeholder, replacement, wholeWords ) ).toString(); } } public static String replaceOnce(String template, String placeholder, String replacement) { int loc = template.indexOf(placeholder); if ( loc<0 ) { return template; } else { return new StringBuffer( template.substring(0, loc) ) .append(replacement) .append( template.substring( loc + placeholder.length() ) ) .toString(); } } public static String[] split(String seperators, String list) { return split(seperators, list, false); } public static String[] split(String seperators, String list, boolean include) { StringTokenizer tokens = new StringTokenizer(list, seperators, include); String[] result = new String[ tokens.countTokens() ]; int i=0; while ( tokens.hasMoreTokens() ) { result[i++] = tokens.nextToken(); } return result; } public static String unqualify(String qualifiedName) { return unqualify(qualifiedName, "."); } public static String unqualify(String qualifiedName, String seperator) { return qualifiedName.substring( qualifiedName.lastIndexOf(seperator) + 1 ); } public static String qualifier(String qualifiedName) { int loc = qualifiedName.lastIndexOf("."); if ( loc<0 ) { return EMPTY_STRING; } else { return qualifiedName.substring(0, loc); } } public static String[] suffix( String[] columns, String suffix) { if (suffix==null) return columns; String[] qualified = new String[columns.length]; for ( int i=0; i<columns.length; i++ ) { qualified[i] = suffix( columns[i], suffix); } return qualified; } public static String suffix(String name, String suffix) { return (suffix==null) ? name : name + suffix; } public static String[] prefix( String[] columns, String prefix) { if (prefix==null) return columns; String[] qualified = new String[columns.length]; for ( int i=0; i<columns.length; i++ ) { qualified[i] = prefix + columns[i]; } return qualified; } public static String root(String qualifiedName) { int loc = qualifiedName.indexOf("."); return (loc<0) ? qualifiedName : qualifiedName.substring(0, loc); } public static boolean booleanValue(String tfString) { String trimmed = tfString.trim().toLowerCase(); return trimmed.equals("true") || trimmed.equals("t"); } public static String toString(Object[] array) { int len = array.length; if (len==0) return StringHelper.EMPTY_STRING; StringBuffer buf = new StringBuffer(len * 12); for ( int i=0; i<len-1; i++ ) { buf.append( array[i] ).append(StringHelper.COMMA_SPACE); } return buf.append( array[len-1] ).toString(); } public static String[] multiply(String string, Iterator placeholders, Iterator replacements) { String[] result = new String[] { string }; while ( placeholders.hasNext() ) { result = multiply( result, (String) placeholders.next(), (String[]) replacements.next() ); } return result; } private static String[] multiply(String[] strings, String placeholder, String[] replacements) { String[] results = new String[ replacements.length * strings.length ]; int n=0; for ( int i=0; i<replacements.length; i++ ) { for ( int j=0; j<strings.length; j++ ) { results[n++] = replaceOnce( strings[j], placeholder, replacements[i] ); } } return results; } /*public static String unQuote(String name) { return ( Dialect.QUOTE.indexOf( name.charAt(0) ) > -1 ) ? name.substring(1, name.length()-1) : name; } public static void unQuoteInPlace(String[] names) { for ( int i=0; i<names.length; i++ ) names[i] = unQuote( names[i] ); } public static String[] unQuote(String[] names) { String[] unquoted = new String[ names.length ]; for ( int i=0; i<names.length; i++ ) unquoted[i] = unQuote( names[i] ); return unquoted; }*/ public static int count(String string, char character) { int n=0; for ( int i=0; i<string.length(); i++ ) { if ( string.charAt(i)==character ) n++; } return n; } public static int countUnquoted(String string, char character) { if ( SINGLE_QUOTE == character ) { throw new IllegalArgumentException("Unquoted count of quotes is invalid"); } // Impl note: takes advantage of the fact that an escpaed single quote // embedded within a quote-block can really be handled as two seperate // quote-blocks for the purposes of this method... int count=0; int stringLength = string == null ? 0 : string.length(); boolean inQuote = false; for ( int indx=0; indx<stringLength; indx++ ) { if ( inQuote ) { if ( SINGLE_QUOTE == string.charAt(indx) ) { inQuote = false; } } else if ( SINGLE_QUOTE == string.charAt(indx) ) { inQuote = true; } else if ( string.charAt(indx)==character ) { count++; } } return count; } public static boolean isNotEmpty(String string) { return string!=null && string.length() > 0; } public static String qualify(String prefix, String name) { return new StringBuffer( prefix.length() + name.length() + 1 ) .append(prefix) .append(DOT) .append(name) .toString(); } public static String[] qualify(String prefix, String[] names) { if (prefix==null) return names; int len = names.length; String[] qualified = new String[len]; for ( int i=0; i<len; i++) { qualified[i] = qualify( prefix, names[i] ); } return qualified; } private StringHelper() { /* static methods only - hide constructor */ } public static int firstIndexOfChar(String sqlString, String string, int startindex) { int matchAt=-1; for (int i = 0; i < string.length(); i++) { int curMatch = sqlString.indexOf( string.charAt(i), startindex ); if (curMatch >=0) { if (matchAt==-1) { // first time we find match! matchAt = curMatch; } else { matchAt = Math.min(matchAt, curMatch); } } } return matchAt; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -