📄 stringutil.java
字号:
package cn.com.syntc.common.util;
import java.io.*;
import java.util.*;
import java.text.*;
/**
* 字符串处理工具类<br>
* @author yanger
* @version $Revision: 1.4.5.1 $ $Date: 2003-5-1 12:48:29 $
*/
public class StringUtil{
/**
* iso-8859-1字符集名称
*/
public static final String ISO_8859_1="iso-8859-1";
/**
* GBK字符集名称
*/
public static final String GBK="GBK";
/**
* GB2312字符集名称
*/
public static final String GB2312="gb2312";
private static Hashtable escapeChar;
private static final char[] hexDigit = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
'A',
'B',
'C',
'D',
'E',
'F'
};
private static final String specialSaveChars = "=: \t\r\n\f#!";
static {
escapeChar = new Hashtable(9);
escapeChar.put("&", "&");
escapeChar.put("'", "'");
escapeChar.put("\"", """);
escapeChar.put("<", "<");
escapeChar.put(">", ">");
escapeChar.put("&", "&");
escapeChar.put("'", "'");
escapeChar.put(""", "\"");
escapeChar.put("<", "<");
escapeChar.put(">", ">");
}
/**
* 字符集转换
* @param s 要转换的字符串
* @param charSetName 字符集
* @param defaultCharSet 默认字符集
* @return String 转换字符串
*/
public static String CharSetConvert(String s,String charSetName,String defaultCharSetName){
String newString=null;
try{
newString = new String(s.getBytes(charSetName),defaultCharSetName);
}catch(UnsupportedEncodingException e){
}catch(NullPointerException nulle){
}
return newString;
}
/**
* 把Exception堆栈信息转化为String.
* <li><i>StackTraceElement[] ste = e.getStackTrace(); 应用于jdk1.4
* @param Exception 异常堆栈
* @return String 异常信息
*/
public static String ObjectToString(Exception e){
StringBuffer sb = new StringBuffer();
/*
StackTraceElement[] ste = e.getStackTrace();
sb.append(e).append("\n");
for(int i = 0; i < ste.length; i++){
sb.append(ste[i].toString()).append("\n");
}
*/
sb.append(e.getMessage()).append("\n");
return sb.toString();
}
/**
* 按分隔符分割字符串
*/
public static String[] split(String str, String delim){
if (str==null)
{
return null;
}
StringTokenizer st = new StringTokenizer(str, delim);
int size = st.countTokens();
String[] result = new String[size];
for(int i=0; i<size; i++)
{
result[i] = st.nextToken();
}
return result;
}
/**
* 将ISO8859-1编码的字符串转为GBK编码
*
* @param str <!-- 请描述方法的参数信息 -->
* @return <!-- 请描述方法的返回信息 -->
*/
public static String ISO2GB2312(String str) {
return convertEncode(str, "ISO-8859-1", "GBK");
}
/**
* @param str <!-- 请描述方法的参数信息 -->
* @param srcEnc <!-- 请描述方法的参数信息 -->
* @param dstEnc <!-- 请描述方法的参数信息 -->
* @return <!-- 请描述方法的返回信息 -->
* @deprecated 方法名“convertCode”不规范,请使用 {@link #convertEncode(String, String, String)},
* 同时可参考使用{@link #convertEncode(String, String)}和 {@link #ISO2GB2312(String)}
*/
public static String convertCode(String str, String srcEnc, String dstEnc) {
return convertEncode(str, srcEnc, dstEnc);
}
/**
* 将字符串转为指定的编码
*
* @param str <!-- 请描述方法的参数信息 -->
* @param dstEnc <!-- 请描述方法的参数信息 -->
* @return <!-- 请描述方法的返回信息 -->
*/
public static String convertEncode(String str, String dstEnc) {
try {
return new String(str.getBytes(), dstEnc);
}
catch (Exception e) {
return str;
}
}
/**
* 将字符串从特定的编码转换到指定的编码
*
* @param str <!-- 请描述方法的参数信息 -->
* @param srcEnc <!-- 请描述方法的参数信息 -->
* @param dstEnc <!-- 请描述方法的参数信息 -->
* @return <!-- 请描述方法的返回信息 -->
*/
public static String convertEncode(String str, String srcEnc, String dstEnc) {
try {
return new String(str.getBytes(srcEnc), dstEnc);
}
catch (Exception e) {
return str;
}
}
/**
* 将字符串中的"&","'",""","<",">"转为"&#38;","&#39;","&#34;","&#60;","&#62;"
*
* @param to_process <!-- 请描述方法的参数信息 -->
* @return <!-- 请描述方法的返回信息 -->
*/
public static String escape(String to_process) {
if ( (to_process == null) || (to_process.length() == 0)) {
return "";
}
StringBuffer bs = new StringBuffer();
StringCharacterIterator sci = new StringCharacterIterator(to_process);
String tmp = null;
for (char c = sci.first(); c != CharacterIterator.DONE; c = sci.next()) {
tmp = String.valueOf(c);
if (escapeChar.containsKey(tmp)) {
tmp = (String) escapeChar.get(tmp);
}
bs.append(tmp);
}
return (bs.toString());
}
/**
* 将字符串转换为\uXXXX的UNICODE表示方法
*
* @param theString <!-- 请描述方法的参数信息 -->
* @param escapeSpace <!-- 请描述方法的参数信息 -->
* @return <!-- 请描述方法的返回信息 -->
*/
public static String nativeToAscii(String theString, boolean escapeSpace) {
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len * 2);
for (int x = 0; x < len; x++) {
char aChar = theString.charAt(x);
switch (aChar) {
case ' ':
if ( (x == 0) || escapeSpace) {
outBuffer.append('\\');
}
outBuffer.append(' ');
break;
case '\\':
outBuffer.append('\\');
outBuffer.append('\\');
break;
case '\t':
outBuffer.append('\\');
outBuffer.append('t');
break;
case '\n':
outBuffer.append('\\');
outBuffer.append('n');
break;
case '\r':
outBuffer.append('\\');
outBuffer.append('r');
break;
case '\f':
outBuffer.append('\\');
outBuffer.append('f');
break;
default:
if ( (aChar < 0x0020) || (aChar > 0x007e)) {
outBuffer.append('\\');
outBuffer.append('u');
outBuffer.append(toHex( (aChar >> 12) & 0xF));
outBuffer.append(toHex( (aChar >> 8) & 0xF));
outBuffer.append(toHex( (aChar >> 4) & 0xF));
outBuffer.append(toHex(aChar & 0xF));
}
else {
if (specialSaveChars.indexOf(aChar) != -1) {
outBuffer.append('\\');
}
outBuffer.append(aChar);
}
}
}
return outBuffer.toString();
}
/**
* 将字符串中的"&#38;","&#39;","&#34;","&#60;","&#62;"转为"&","'",""","<",">"
*
* @param to_process <!-- 请描述方法的参数信息 -->
* @return <!-- 请描述方法的返回信息 -->
*/
public static String unescape(String to_process) {
if ( (to_process == null) || (to_process.length() == 0)) {
return "";
}
StringBuffer bs = new StringBuffer();
StringBuffer tmp = new StringBuffer();
StringCharacterIterator sci = new StringCharacterIterator(to_process);
boolean flag = false;
for (char c = sci.first(); c != CharacterIterator.DONE; c = sci.next()) {
if (c == '&') {
flag = true;
if (tmp.length() > 0) {
bs.append(tmp);
tmp.delete(0, tmp.length());
}
}
if (flag) {
tmp.append(c);
if (c == ';') {
if (escapeChar.containsKey(tmp.toString())) {
bs.append(escapeChar.get(tmp.toString()));
}
else {
bs.append(tmp);
}
tmp.delete(0, tmp.length());
flag = false;
}
}
else {
bs.append(c);
}
}
if (tmp.length() > 0) {
bs.append(tmp);
}
return (bs.toString());
}
private static char toHex(int nibble) {
return hexDigit[ (nibble & 0xF)];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -