stringutils.java
来自「招标投标网上系统」· Java 代码 · 共 282 行
JAVA
282 行
// %1028209237561:com.neusoft.im.util%
/* Auto record by SourceSafe
*****************************************************************************
* $Workfile: StringUtils.java $
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* $History: StringUtils.java $
*
* ***************** Version 1 *****************
* User: Lihg Date: 03-12-10 Time: 8:44
* Created in $/4 开发工作目录/src/COM/neusoft/im/util
*
* ***************** Version 1 *****************
* User: Zhangdi Date: 03-02-13 Time: 13:50
* Created in $/IM1.2/classes/com/neusoft/im/util
*
* ***************** Version 1 *****************
* User: Zhangdi Date: 02-08-12 Time: 10:26
* Created in $/portalserver/classes/com/neusoft/im/util
*****************************************************************************
*/
package com.neusoft.util;
import java.text.*;
import java.util.*;
public class StringUtils {
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(">", ">");
}
/**
* 将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 + =
减小字号Ctrl + -
显示快捷键?