Java常用工具类---字符编码工具类、数据类型转换工具类

本文详细介绍了Java中常用的字符编码工具类和数据类型转换工具类,包括它们的功能、使用场景和示例代码,帮助开发者提升代码效率和质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.jarvis.base.util;

import java.io.UnsupportedEncodingException;

/**
 * <p>
 * Title:字符编码工具类
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * Copyright: Copyright (c) 2007
 * </p>
 * <p>
 * Company:
 * </p>
 * 
 * @author:
 * @version 1.0
 */
public class CharTools {

	/**
	 * 转换编码 ISO-8859-1到GB2312
	 * 
	 * @param text
	 * @return
	 */
	public static final String ISO2GB(String text) {
		String result = "";
		try {
			result = new String(text.getBytes("ISO-8859-1"), "GB2312");
		} catch (UnsupportedEncodingException ex) {
			result = ex.toString();
		}
		return result;
	}

	/**
	 * 转换编码 GB2312到ISO-8859-1
	 * 
	 * @param text
	 * @return
	 */
	public static final String GB2ISO(String text) {
		String result = "";
		try {
			result = new String(text.getBytes("GB2312"), "ISO-8859-1");
		} catch (UnsupportedEncodingException ex) {
			ex.printStackTrace();
		}
		return result;
	}

	/**
	 * Utf8URL编码
	 * 
	 * @param s
	 * @return
	 */
	public static final String Utf8URLencode(String text) {
		StringBuffer result = new StringBuffer();

		for (int i = 0; i < text.length(); i++) {

			char c = text.charAt(i);
			if (c >= 0 && c <= 255) {
				result.append(c);
			} else {

				byte[] b = new byte[0];
				try {
					b = Character.toString(c).getBytes("UTF-8");
				} catch (Exception ex) {
				}

				for (int j = 0; j < b.length; j++) {
					int k = b[j];
					if (k < 0)
						k += 256;
					result.append("%" + Integer.toHexString(k).toUpperCase());
				}

			}
		}

		return result.toString();
	}

	/**
	 * Utf8URL解码
	 * 
	 * @param text
	 * @return
	 */
	public static final String Utf8URLdecode(String text) {
		String result = "";
		int p = 0;

		if (text != null && text.length() > 0) {
			text = text.toLowerCase();
			p = text.indexOf("%e");
			if (p == -1)
				return text;

			while (p != -1) {
				result += text.substring(0, p);
				text = text.substring(p, text.length());
				if (text == "" || text.length() < 9)
					return result;

				result += CodeToWord(text.substring(0, 9));
				text = text.substring(9, text.length());
				p = text.indexOf("%e");
			}

		}

		return result + text;
	}

	/**
	 * utf8URL编码转字符
	 * 
	 * @param text
	 * @return
	 */
	private static final String CodeToWord(String text) {
		String result;

		if (Utf8codeCheck(text)) {
			byte[] code = new byte[3];
			code[0] = (byte) (Integer.parseInt(text.substring(1, 3), 16) - 256);
			code[1] = (byte) (Integer.parseInt(text.substring(4, 6), 16) - 256);
			code[2] = (byte) (Integer.parseInt(text.substring(7, 9), 16) - 256);
			try {
				result = new String(code, "UTF-8");
			} catch (UnsupportedEncodingException ex) {
				result = null;
			}
		} else {
			result = text;
		}

		return result;
	}

	/**
	 * 编码是否有效
	 * 
	 * @param text
	 * @return
	 */
	@SuppressWarnings("unused")
	private static final boolean Utf8codeCheck(String text) {
		String sign = "";
		if (text.startsWith("%e"))
			for (int i = 0, p = 0; p != -1; i++) {
				p = text.indexOf("%", p);
				if (p != -1)
					p++;
				sign += p;
			}
		return sign.equals("147-1");
	}

	/**
	 * 判断是否Utf8Url编码
	 * 
	 * @param text
	 * @return
	 */
	public static final boolean isUtf8Url(String text) {
		text = text.toLowerCase();
		int p = text.indexOf("%");
		if (p != -1 && text.length() - p > 9) {
			text = text.substring(p, p + 9);
		}
		return Utf8codeCheck(text);
	}

	/**
	 * 测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {

		// CharTools charTools = new CharTools();

		String url;

		url = "http://www.google.com/search?hl=zh-CN&newwindow=1&q=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E7%99%BE%E7%A7%91%E5%9C%A8%E7%BA%BF%E5%85%A8%E6%96%87%E6%A3%80%E7%B4%A2&btnG=%E6%90%9C%E7%B4%A2&lr=";
		if (CharTools.isUtf8Url(url)) {
			System.out.println(CharTools.Utf8URLdecode(url));
		} else {
			// System.out.println(URLDecoder.decode(url));
		}

		url = "http://www.baidu.com/baidu?word=%D6%D0%B9%FA%B4%F3%B0%D9%BF%C6%D4%DA%CF%DF%C8%AB%CE%C4%BC%EC%CB%F7&tn=myie2dg";
		if (CharTools.isUtf8Url(url)) {
			System.out.println(CharTools.Utf8URLdecode(url));
		} else {
			// System.out.println(URLDecoder.decode(url));
		}

	}

}





package com.jarvis.base.util;

import java.util.List;

/**   
* @Title: ConvertHelper.java 
* @Package com.jarvis.base.util 
* @Description:数据类型转换
* @version V1.0   
*/ 
public class ConvertHelper
{
	/**
	 * 把字串转化为整数,若转化失败,则返回0
	 *
	 * @param str
	 *            字串
	 * @return
	 */
	public static int strToInt(String str) {
		if (str == null) {
			return 0;
		}

		try {
			return Integer.parseInt(str);
		} catch (Exception ex) {
			ex.printStackTrace();
			System.err.println(str + "转换成int类型失败,请检查数据来源");
		}
		return 0;
	}

	/**
	 * 把字串转化为长整型数,若转化失败,则返回0
	 *
	 * @param str
	 *            要转化为长整型的字串
	 * @return
	 */
	public static long strToLong(String str) {
		if (str == null) {
			return 0;
		}

		try {
			return Long.parseLong(str);
		} catch (Exception ex) {
			ex.printStackTrace();
			System.err.println(str + "转换成long类型失败,请检查数据来源");
		}
		return 0;
	}

	/**
	 * 把字串转化为Float型数据,若转化失败,则返回0
	 *
	 * @param str
	 *            要转化为Float的字串
	 * @return
	 */
	public static float strToFloat(String str) {
		if (str == null) {
			return 0;
		}
		try {
			return Float.parseFloat(str);
		} catch (Exception ex) {
			ex.printStackTrace();
			System.err.println(str + "转换成float类型失败,请检查数据来源");
		}
		return 0;
	}

	/**
	 * 把字串转化为Double型数据,若转化失败,则返回0
	 * 
	 * @param str
	 *            要转化为Double的字串
	 * @return
	 */
	public static double strToDouble(String str) {
		if (str == null) {
			return 0;
		}
		try {
			return Double.parseDouble(str);
		} catch (Exception ex) {
			ex.printStackTrace();
			System.err.println(str + "转换成double类型失败,请检查数据来源");
		}
		return 0;
	}

	/**
	 * 描述:字符转为一个元素的Object数组
	 * 
	 * @param str
	 * @return
	 */
	public static Object[] strToArry(String str) {
		if (str == null) {
			return null;
		} else {
			return new Object[] { str };
		}
	}

	/**
	 * 对于一个字符串数组,把字符串数组中的每一个字串转换为整数。 返回一个转换后的整型数组,对于每一个字串若转换失败,则对 应的整型值就为0
	 *
	 * @param strArray
	 *            要转化的数组
	 * @return
	 */
	public static int[] strArrayToIntArray(String[] strArray) {
		int[] intArray = new int[strArray.length];
		for (int i = 0; i < strArray.length; i++) {
			intArray[i] = strToInt(strArray[i]);
		}
		return intArray;
	}

	/**
	 * 描述:数组转换为字符串
	 * 
	 * @param arg0
	 *            数组
	 * @return
	 */
	public static String arrToString(Object[] arg0) {
		if (arg0 == null) {
			return "";
		}
		return arrToString(arg0, ",");
	}

	/**
	 * 描述:数据转换为字符串
	 * 
	 * @param arg0
	 *            数组
	 * @param arg1
	 *            取数组个数
	 * @return
	 */
	public static String arrToString(Object[] arg0, int arg1) {
		if (arg0 == null) {
			return "";
		}
		return arrToString(arg0, ",", arg1);
	}

	/**
	 * 描述:数据转换为字符串
	 * 
	 * @param arg0
	 *            数组
	 * @param arg1
	 *            间隔符号
	 * @return
	 */
	public static String arrToString(Object[] arg0, String arg1) {
		return arrToString(arg0, arg1, 0);
	}

	/**
	 * 描述:数据转换为字符串
	 * 
	 * @param arg0
	 *            数组
	 * @param arg1
	 *            间隔符号
	 * @param arg2
	 *            取数组个数
	 * @return
	 */
	public static String arrToString(Object[] arg0, String arg1, int arg2) {
		if (arg0 == null || arg0.length == 0) {
			return "";
		} else {
			StringBuffer sb = new StringBuffer();
			int length = arg0.length;
			if (arg2 != 0) {
				length = arg2;
			}
			for (int i = 0; i < length; i++) {
				if (arg1 == null)
					arg1 = "";
				sb.append(arg0[i]).append(arg1);
			}
			sb.delete(sb.lastIndexOf(arg1), sb.length());
			return sb.toString();
		}
	}

	/**
	 * 描述:List转换为字符串
	 * 
	 * @param list
	 *            List数据
	 * @param separation
	 *            间隔符
	 * @return
	 */
	public static String listToString(List<?> list) {
		return listToString(list, ",");
	}

	/**
	 * 描述:List转换为字符串
	 * 
	 * @param list
	 *            List数据
	 * @param separation
	 *            间隔符
	 * @return
	 */
	public static String listToString(List<?> list, String separation) {
		return arrToString(listToStringArray(list), separation);
	}

	/**
	 * 描述:字串数据元素包装
	 * 
	 * @param sArr
	 *            字串数据
	 * @param pre
	 *            前缀
	 * @param aft
	 *            后缀
	 * @return
	 */
	public static String[] strArrDoPack(String[] sArr, String pre, String aft) {
		return strArrDoPack(sArr, pre, aft, 1, 0);
	}

	/**
	 * 描述:字串数据元素包装
	 * 
	 * @param sArr
	 *            字串数据
	 * @param pre
	 *            前缀
	 * @param aft
	 *            后缀
	 * @param num
	 *            生成个数
	 * @return
	 */
	public static String[] strArrDoPack(String[] sArr, String pre, String aft, int num) {
		return strArrDoPack(sArr, pre, aft, num, 0);
	}

	/**
	 * 描述:字串数据元素包装
	 * 
	 * @param sArr
	 *            字串数据
	 * @param pre
	 *            前缀
	 * @param aft
	 *            后缀
	 * @param num
	 *            生成个数
	 * @param step
	 *            数字值1:加,-1:减,0:不变
	 * @return
	 */
	public static String[] strArrDoPack(String[] sArr, String pre, String aft, int num, int step) {
		String[] arr = null;
		if (sArr != null) {
			boolean isAdd = false;
			if (step > 0) {
				isAdd = true;
			}

			if (num < 0) {
				num = 1;
			}

			arr = new String[sArr.length * num];
			int icount = 0;
			for (int i = 0; i < num; i++) {
				for (int j = 0; j < sArr.length; j++) {
					if (StringHelper.isNotEmpty(pre)) {
						arr[icount] = pre + sArr[j];
					}
					if (StringHelper.isNotEmpty(aft)) {
						arr[icount] += aft;
					}
					icount++;
				}

				boolean b = false;
				if (step != 0) {
					pre = stepNumInStr(pre, isAdd);
					b = true;
				}
				if (!b) {
					if (step != 0) {
						aft = stepNumInStr(aft, isAdd);
					}
				}
			}

		}
		return arr;
	}

	/**
	 * 描述:生成字符串
	 * 
	 * @param arg0
	 *            字符串元素
	 * @param arg1
	 *            生成个数
	 * @return
	 */
	public static String createStr(String arg0, int arg1) {
		if (arg0 == null) {
			return "";
		}
		return createStr(arg0, arg1, ",");
	}

	/**
	 * 描述:生成字符串
	 * 
	 * @param arg0
	 *            字符串元素
	 * @param arg1
	 *            生成个数
	 * @param arg2
	 *            间隔符号
	 * @return
	 */
	public static String createStr(String arg0, int arg1, String arg2) {
		if (arg0 == null) {
			return "";
		} else {
			StringBuffer sb = new StringBuffer();
			for (int i = 0; i < arg1; i++) {
				if (arg2 == null)
					arg2 = "";
				sb.append(arg0).append(arg2);
			}
			if (sb.length() > 0) {
				sb.delete(sb.lastIndexOf(arg2), sb.length());
			}

			return sb.toString();
		}
	}

	/**
	 * 描述:生成字符串数据
	 * 
	 * @param arg0
	 *            字符串元素
	 * @param arg1
	 *            生成个数
	 * @param arg2
	 *            间隔符号
	 * @return
	 */
	public static String[] createStrArr(String arg0, int arg1) {
		if (arg0 == null) {
			return null;
		} else {
			String[] arr = new String[arg1];
			for (int i = 0; i < arg1; i++) {
				arr[i] = arg0;
			}

			return arr;
		}
	}

	/**
	 * 描述:只保留字符串的英文字母和“_”号
	 * 
	 * @param str
	 * @return
	 */
	public static String replaceAllSign(String str) {
		if (str != null && str.length() > 0) {
			str = str.replaceAll("[^a-zA-Z_]", "");
		}
		return str;
	}

	/**
	 * 描述:字串中的数字值加1
	 * 
	 * @param str
	 *            字串
	 * @param isAdd
	 *            数字值true:加,false:减
	 * @return
	 */
	public static String stepNumInStr(String str, boolean isAdd) {
		String sNum = str.replaceAll("[^0-9]", ",").trim();
		if (sNum == null || sNum.length() == 0) {
			return str;
		}
		String[] sNumArr = sNum.split(",");

		for (int i = 0; i < sNumArr.length; i++) {
			if (sNumArr[i] != null && sNumArr[i].length() > 0) {
				int itemp = Integer.parseInt(sNumArr[i]);
				if (isAdd) {
					itemp += 1;
				} else {
					itemp -= 1;
				}
				str = str.replaceFirst(sNumArr[i], String.valueOf(itemp));
				break;
			}
		}

		return str;
	}

	/**
	 * 描述:list 转换为 String[]
	 * 
	 * @param list
	 * @return
	 */
	public static String[] listToStringArray(List<?> list) {
		if (list == null || list.size() == 0) {
			return null;
		}
		return (String[]) list.toArray(new String[list.size()]);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值