/* * Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences. * * This file is part of Duckling project. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package cn.vlabs.umt.common.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Pattern; /**常用的工具类了 * @author lvly * @since 2012-6-18 * */ public final class CommonUtils { public static final Pattern INT = Pattern.compile("^\\d+$|-\\d+$"); public static final Pattern DOUBLE = Pattern.compile("\\d+\\.\\d+$|-\\d+\\.\\d+$"); private CommonUtils(){} /** * 判断是否为数字,小数或者整数 * */ public static boolean isNumber(String str){ if(isNull(str)){ return false; } return INT.matcher(str).find()||DOUBLE.matcher(str).find(); } /** * 通用是否为空 * @param obj * @return isNull or isEmpty * */ public static boolean isNull(Object obj){ if(obj==null){ return true; } if(obj instanceof List){ return isNull((List<?>)obj); }else if(obj instanceof Map){ return isNull((Map<?,?>)obj); }else if(obj instanceof String[]){ return isNull((String[])obj); }else if(obj instanceof int[]){ return isNull((int[])obj); }else if(obj instanceof Set){ return isNull((Set<?>)obj); }else if(obj instanceof String){ return isNull((String)obj); }else if(obj instanceof Object[]){ return isNull((Object[])obj); } //最好不要走到这一步 return false; } /**判断数组是否为空,判断.split出来的数组格外有效 * @param array 判定数组 * */ public static boolean isNull(String[] array){ return (array==null||array.length==0||(array.length==1&&"".equals(array[0]))); } public static boolean isNull(Object[] array){ return (array==null||array.length==0); } /**判断数组为空,int类型 * @param array int类型的判定数组 * */ public static boolean isNull(int[] array){ return (array==null||array.length==0); } /**是否空列表, * @param list 待判定列表 * */ public static boolean isNull(List<?> list){ return (list==null)||(list.size()==0); } /**是否空列表, * @param list 待判定列表 * */ public static boolean isNull(Set<?> list){ return (list==null)||(list.size()==0); } /** * 判断是否是空集合 * @param map Map对象 * */ public static boolean isNull(Map<?,?> map){ return (map==null||(map.isEmpty())); } /**把单个的对象转化为数组,匹配参数用 * @param k 某一个对象 * @return List<K> * */ public static <K> List<K> getList(K k){ List<K> ks=new ArrayList<K>(); ks.add(k); return ks; } /**把队列里的第一个元素拿出来而不抛异常 * @param List<K> 原队列 * @return K 第一个元素 * */ public static <K> K first(List<K> list){ if(isNull(list)){ return null; } return list.get(0); } /**判断字符串是否为空 * @param str the String what need to judice * @param boolean isNull? * */ public static boolean isNull(String str){ return str==null||"".equals(str.trim())||"null".equals(str.toLowerCase().trim()); } /**杀掉空串和空 * @param str the String what need to judice * @param str never return null * */ public static String killNull(Object obj){ return CommonUtils.isNull(obj)?"":obj.toString().trim(); } /** * 同上,不过只是针对字符串 * @param str the String what need to judice * @param str never return null * */ public static String killNull(String str){ return CommonUtils.isNull(str)?"":str.trim(); } /**把数组里的String元素转换成Integer元素 * @param array 数组 * @return array * */ public static int[] stringArray2IntArray(String[] array){ int[] result=new int[0]; if(array!=null){ result=new int[array.length]; for(int i=0;i<array.length;i++){ result[i]=Integer.parseInt(array[i]); } } return result; } /**把字符串格式化一下,就是拼接字符串的时候把最后一个","之类的东西删掉 * @param str 需要格式化的字符串 * @param flag ","或者什么的,默认是"," * @return 返回格式化后的字符串 * */ public static String format(String str,String flag){ if(CommonUtils.isNull(str)){ return ""; } StringBuilder sb=new StringBuilder(str); if(sb.indexOf(flag)>0){ return sb.substring(0,sb.lastIndexOf(flag)); } return sb.toString(); } /**把字符串格式化一下,就是拼接字符串的时候把最后一个","之类的东西删掉 * @param str 需要格式化的字符串,默认是"," * @return 返回格式化后的字符串 * */ public static String format(String str){ return format(str,","); } /** * 把一个数字的字符串转换成Int,如果是小数,则强转成int * * */ public static int toInt(String x){ return (int)Float.parseFloat(x); } /** * trim方法,不会爆空指针异常,但是近来null,就会返回null * @param str * @return str.trim(); * */ public static String trim(String str){ return str==null?null:str.trim(); } public static <T> Map<String,T> extractSthFieldToMap(List<T> list,String fieldName){ if(CommonUtils.isNull(list)){ return new HashMap<String,T>(); } Map<String,T> result=new HashMap<String,T>(); for(T t:list){ Object obj=ReflectUtils.getValue(t, fieldName); result.put(obj==null?null:obj.toString(),t); } return result; } public static <T> List<String> extractSthField(List<T> list,String fieldName){ if(CommonUtils.isNull(list)){ return null; } List<String> result=new ArrayList<String>(); for(T t:list){ Object obj=ReflectUtils.getValue(t, fieldName); result.add(obj==null?null:obj.toString()); } return result; } }