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()]);
}
}
还没有评论,来说两句吧...