📄 quotedstringtokenizer.java
字号:
/* ------------------------------------------------------------ */ /** Quote a string into a StringBuffer. * The characters ", \, \n, \r, \t, \f and \b are escaped * @param buf The StringBuffer * @param s The String to quote. */ public static void quote(StringBuffer buf, String s) { synchronized(buf) { buf.append('"'); char[] chars = null; int i=0; loop: for (;i<s.length();i++) { char c = s.charAt(i); switch(c) { case '"': chars = s.toCharArray(); buf.append(chars,0,i); buf.append("\\\""); break loop; case '\\': chars = s.toCharArray(); buf.append(chars,0,i); buf.append("\\\\"); break loop; case '\n': chars = s.toCharArray(); buf.append(chars,0,i); buf.append("\\n"); break loop; case '\r': chars = s.toCharArray(); buf.append(chars,0,i); buf.append("\\r"); break loop; case '\t': chars = s.toCharArray(); buf.append(chars,0,i); buf.append("\\t"); break loop; case '\f': chars = s.toCharArray(); buf.append(chars,0,i); buf.append("\\f"); break loop; case '\b': chars = s.toCharArray(); buf.append(chars,0,i); buf.append("\\b"); break loop; default: continue; } } if (chars==null) buf.append(s); else { i++; for (;i<s.length();i++) { char c = s.charAt(i); switch(c) { case '"': buf.append("\\\""); continue; case '\\': buf.append("\\\\"); continue; case '\n': buf.append("\\n"); continue; case '\r': buf.append("\\r"); continue; case '\t': buf.append("\\t"); continue; case '\f': buf.append("\\f"); continue; case '\b': buf.append("\\b"); continue; default: buf.append(c); continue; } } } buf.append('"'); } } /* ------------------------------------------------------------ */ /** Quote a string into a StringBuffer. * The characters ", \, \n, \r, \t, \f, \b are escaped. * Quotes are forced if any escaped characters are present or there * is a ", ', space, + or % character. * * @param buf The StringBuffer * @param s The String to quote. */ public static void quoteIfNeeded(StringBuffer buf, String s) { synchronized(buf) { int e=-1; search: for (int i=0;i<s.length();i++) { char c = s.charAt(i); switch(c) { case '"': case '\\': case '\n': case '\r': case '\t': case '\f': case '\b': case '%': case '+': case ' ': e=i; buf.append('"'); // TODO when 1.4 support is dropped: buf.append(s,0,e); for (int j=0;j<e;j++) buf.append(s.charAt(j)); break search; default: continue; } } if (e<0) { buf.append(s); return; } for (int i=e;i<s.length();i++) { char c = s.charAt(i); switch(c) { case '"': buf.append("\\\""); continue; case '\\': buf.append("\\\\"); continue; case '\n': buf.append("\\n"); continue; case '\r': buf.append("\\r"); continue; case '\t': buf.append("\\t"); continue; case '\f': buf.append("\\f"); continue; case '\b': buf.append("\\b"); continue; default: buf.append(c); continue; } } buf.append('"'); } } /* ------------------------------------------------------------ */ /** Unquote a string. * @param s The string to unquote. * @return quoted string */ public static String unquote(String s) { if (s==null) return null; if (s.length()<2) return s; char first=s.charAt(0); char last=s.charAt(s.length()-1); if (first!=last || (first!='"' && first!='\'')) return s; StringBuffer b=new StringBuffer(s.length()-2); synchronized(b) { boolean escape=false; for (int i=1;i<s.length()-1;i++) { char c = s.charAt(i); if (escape) { escape=false; switch (c) { case 'n': b.append('\n'); break; case 'r': b.append('\r'); break; case 't': b.append('\t'); break; case 'f': b.append('\f'); break; case 'b': b.append('\b'); break; case 'u': b.append((char)( (TypeUtil.convertHexDigit((byte)s.charAt(i++))<<24)+ (TypeUtil.convertHexDigit((byte)s.charAt(i++))<<16)+ (TypeUtil.convertHexDigit((byte)s.charAt(i++))<<8)+ (TypeUtil.convertHexDigit((byte)s.charAt(i++))) ) ); break; default: b.append(c); } } else if (c=='\\') { escape=true; continue; } else b.append(c); } return b.toString(); } } /* ------------------------------------------------------------ */ /** * @return handle double quotes if true */ public boolean getDouble() { return _double; } /* ------------------------------------------------------------ */ /** * @param d handle double quotes if true */ public void setDouble(boolean d) { _double=d; } /* ------------------------------------------------------------ */ /** * @return handle single quotes if true */ public boolean getSingle() { return _single; } /* ------------------------------------------------------------ */ /** * @param single handle single quotes if true */ public void setSingle(boolean single) { _single=single; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -