package com.gkui.tols;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
/**
* @author gzkui
* 工具类
*/
public class JiveGlobe {
private JiveGlobe(){
}
private static class JiveGlobeHolder{
private static JiveGlobe instance = new JiveGlobe();
}
public static JiveGlobe getInstance() {
return JiveGlobeHolder.instance;
}
//对象
public static boolean isEmpty(Object obj){
if (obj == null)
return true;
if (obj instanceof CharSequence)
return ((CharSequence) obj).length() == 0;
if (obj instanceof Collection)
return ((Collection) obj).isEmpty();
if (obj instanceof Map)
return ((Map) obj).isEmpty();
if (obj instanceof Object[]) {
Object[] object = (Object[]) obj;
if (object.length == 0) {
return true;
}
boolean empty = true;
for (int i = 0; i < object.length; i++) {
if (!isEmpty(object[i])) {
empty = false;
break;
}
}
return empty;
}
return false;
}
//数组
public static boolean isEmpty(String[] str){
// str = new String[]{"segs","segs"};
boolean temp = true;
if(str==null || (str!=null&& str.length==0)){
}else{
temp = false;
}
return temp;
}
//集合
public static <T> boolean isEmpty(List<T> str){
boolean temp = true;
if(str==null || str.isEmpty()){
}else{
temp = false;
}
return temp;
}
//字符串
public static boolean isEmpty(String input) {
return null==input || 0==input.length() || 0==input.replaceAll("\\s", "").length();
}
//字节数组
public static boolean isEmpty(byte[] bytes){
return null==bytes || 0==bytes.length;
}
/**
* 程序优化
* @see 该系列方法用于对字符串的一些常规执行速度优化处理
*/
public static String getFromSpendSubstring(String str, int begin, int end){
return new String(str.substring(begin, end));
}
public static List<String> getFromSpendSpilt(String str, String str1){
StringTokenizer st = new StringTokenizer(str,str1);
List<String> list = new ArrayList<String>();
while (st.hasMoreTokens()){
list.add(st.nextToken());
}
return list;
}
/**
* <p>
* 反转字符串.
* </p>
*
* @param str
* 源字符串
* @return String
*/
public static String getFromReverse(String str) {
if (str == null) {
return null;
}
return new StringBuilder(str).reverse().toString();
}
/**
* 获取Map中的属性
* @see 该方法的参数适用于打印Map<String, byte[]>的情况
* @return String key11=value11 \n key22=value22 \n key33=value33 \n......
*/
public static String getFromMap(Map<String, String> map){
StringBuilder sb = new StringBuilder();
sb.append(map.getClass().getName()).append("@").append(map.hashCode()).append("[");
for(Map.Entry<String,String> entry : map.entrySet()){
sb.append("\n").append(entry.getKey()).append("=").append(entry.getValue());
}
return sb.append("\n]").toString();
}
/**
* 获取Map中的属性
* @see 该方法的参数适用于打印Map<String, byte[]>的情况
* @return String key11=value11 \n key22=value22 \n key33=value33 \n......
*/
public static String getFromMapForByte(Map<String, byte[]> map){
StringBuilder sb = new StringBuilder();
sb.append(map.getClass().getName()).append("@").append(map.hashCode()).append("[");
for(Map.Entry<String,byte[]> entry : map.entrySet()){
sb.append("\n").append(entry.getKey()).append("=").append(new String(entry.getValue()));
}
return sb.append("\n]").toString();
}
/**
* 获取Map中的属性
* @see 该方法的参数适用于打印Map<String, Object>的情况
* @return String key11=value11 \n key22=value22 \n key33=value33 \n......
*/
public static String getFromMapForObject(Map<String, Object> map){
StringBuilder sb = new StringBuilder();
sb.append(map.getClass().getName()).append("@").append(map.hashCode()).append("[");
for(Map.Entry<String,Object> entry : map.entrySet()){
sb.append("\n").append(entry.getKey()).append("=").append(entry.getValue().toString());
}
return sb.append("\n]").toString();
}
/**
* 金额元转分
* @see 注意:该方法可处理贰仟万以内的金额,且若有小数位,则不限小数位的长度
*/
public static String getFromToFen(String amount){
if(isEmpty(amount)){
return amount;
}
//传入的金额字符串代表的是一个整数
if(-1 == amount.indexOf(".")){
return Integer.parseInt(amount) * 100 + "";
}
//传入的金额字符串里面含小数点-->取小数点前面的字符串,并将之转换成单位为分的整数表示
int money_fen = Integer.parseInt(amount.substring(0, amount.indexOf("."))) * 100;
//取到小数点后面的字符串
String pointBehind = (amount.substring(amount.indexOf(".") + 1));
//amount=12.3
if(pointBehind.length() == 1){
return money_fen + Integer.parseInt(pointBehind)*10 + "";
}
//小数点后面的第一位字符串的整数表示
int pointString_1 = Integer.parseInt(pointBehind.substring(0, 1));
//小数点后面的第二位字符串的整数表示
int pointString_2 = Integer.parseInt(pointBehind.substring(1, 2));
//amount==12.03,amount=12.00,amount=12.30
if(pointString_1 == 0){
return money_fen + pointString_2 + "";
}else{
return money_fen + pointString_1*10 + pointString_2 + "";
}
}
/**
* HTML字符转义
* @see 对输入参数中的敏感字符进行过滤替换,防止用户利用JavaScript等方式输入恶意代码
*/
public static String getFormEscape(String input) {
if(isEmpty(input)){
return input;
}
input = input.replaceAll("&", "&");
input = input.replaceAll("<", "<");
input = input.replaceAll(">", ">");
input = input.replaceAll(" ", " ");
input = input.replaceAll("‘", "'"); //IE暂不支持单引号的实体名称,而支持单引号的实体编号,故单引号转义成实体编号,其它字符转义成实体名称
input = input.replaceAll("\"", """); //双引号也需要转义,所以加一个斜线对其进行转义
input = input.replaceAll("\n", "<br/>"); //不能把\n的过滤放在前面,因为还要对<和>过滤,这样就会导致<br/>失效了
return input;
}
/**
* 拼音工具类
*/
/**
* 将字符串中的中文转化为拼音,其他字符不变
*
* @param inputString
* @return
*/
// public static String getFromPingYin(String inputString) {
// HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
// format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// format.setVCharType(HanyuPinyinVCharType.WITH_V);
//
// char[] input = inputString.trim().toCharArray();
// String output = "";
//
// try {
// for (int i = 0; i < input.length; i++) {
// if (java.lang.Character.toString(input[i]).matches("[\\u4E00-\\u9FA5]+")) {
// String[] temp = PinyinHelper.toHanyuPinyinStringArray(input[i], format);
// output += temp[0];
// } else
// output += java.lang.Character.toString(input[i]);
// }
// } catch (BadHanyuPinyinOutputFormatCombination e) {
// e.printStackTrace();
// }
// return output;
// }
/**
* 获取汉字串拼音首字母,英文字符不变
* @param chinese 汉字串
* @return 汉语拼音首字母
*/
// public static String getFromFirstSpell(String chinese) {
// StringBuffer pybf = new StringBuffer();
// char[] arr = chinese.toCharArray();
// HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// for (int i = 0; i < arr.length; i++) {
// if (arr[i] > 128) {
// try {
// String[] temp = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
// if (temp != null) {
// pybf.append(temp[0].charAt(0));
// }
// } catch (BadHanyuPinyinOutputFormatCombination e) {
// e.printStackTrace();
// }
// } else {
// pybf.append(arr[i]);
// }
// }
// return pybf.toString().replaceAll("\\W", "").trim();
// }
/**
* 获取汉字串拼音,英文字符不变
* @param chinese 汉字串
* @return 汉语拼音
*/
// public static String getFromFullSpell(String chinese) {
// StringBuffer pybf = new StringBuffer();
// char[] arr = chinese.toCharArray();
// HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
// defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
// defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
// for (int i = 0; i < arr.length; i++) {
// if (arr[i] > 128) {
// try {
// pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
// } catch (BadHanyuPinyinOutputFormatCombination e) {
// e.printStackTrace();
// }
// } else {
// pybf.append(arr[i]);
// }
// }
// return pybf.toString();
// }
}