⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringutil.java

📁 招标投标网上系统
💻 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("&", "&#38;");
    escapeChar.put("'", "&#39;");
    escapeChar.put("\"", "&#34;");
    escapeChar.put("<", "&#60;");
    escapeChar.put(">", "&#62;");

    escapeChar.put("&#38;", "&");
    escapeChar.put("&#39;", "'");
    escapeChar.put("&#34;", "\"");
    escapeChar.put("&#60;", "<");
    escapeChar.put("&#62;", ">");
  }

	/**
	 * 字符集转换
	 * @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;"转为"&#38;#38;","&#38;#39;","&#38;#34;","&#38;#60;","&#38;#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());
  }

  /**
   * 将字符串转换为&#92;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;#38;","&#38;#39;","&#38;#34;","&#38;#60;","&#38;#62;"转为"&#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 + -