package org.jplus.util; import java.math.BigDecimal; import java.math.BigInteger; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 将表单的内容放到POJO类中 * @author hyberbin * @version 1.0 */ public class ConverString { /** * 将String转换成BigDecimal * @param str String * @return BigDecimal */ public static BigDecimal asBigDecimal(String str) { return asBigDecimal(str, new BigDecimal(BigInteger.ZERO)); } /** * 将String转换成BigDecimal * @param str String * @param defaultValue 默认值 * @return String */ public static BigDecimal asBigDecimal(String str, BigDecimal defaultValue) { try { return new BigDecimal(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } catch (RuntimeException runtimeexception) { return defaultValue; } } /** * 将String转换成BigInteger * @param str String * @return BigInteger */ public static BigInteger asBigInteger(String str) { return asBigInteger(str, BigInteger.ZERO); } /** * 将String转换成BigInteger * @param str String * @param defaultValue 默认值 * @return BigInteger */ public static BigInteger asBigInteger(String str, BigInteger defaultValue) { try { return new BigInteger(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 boolean * @param str String * @return boolean */ public static boolean asBoolean(String str) { return asBoolean(str, false); } /** * 将 String 解码为 Boolean * @param str String * @param defaultValue 默认值 * @return Boolean */ public static Boolean asBoolean(String str, Boolean defaultValue) { try { str = str.trim(); return Integer.decode(str).intValue() == 0 ? Boolean.FALSE : Boolean.TRUE; } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { } if (str.equals("")) { return defaultValue; } for (int i = 0; i < FALSE_STRINGS.length; i++) { if (str.equalsIgnoreCase(FALSE_STRINGS[i])) { return Boolean.FALSE; } } return Boolean.TRUE; } /** * 将 String 解码为 boolean * @param str String * @param defaultValue 默认值 * @return boolean */ public static boolean asBoolean(String str, boolean defaultValue) { try { str = str.trim(); return Integer.decode(str).intValue() != 0; } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { } if (str.equals("")) { return defaultValue; } for (int i = 0; i < FALSE_STRINGS.length; i++) { if (str.equalsIgnoreCase(FALSE_STRINGS[i])) { return false; } } return true; } /** * 将 String 解码为 byte * @param str String * @return byte */ public static byte asByte(String str) { return asByte(str, (byte) 0); } /** * 将 String 解码为 Byte * @param str String * @param defaultValue 默认值 * @return Byte */ public static Byte asByte(String str, Byte defaultValue) { try { return Byte.decode(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 byte * @param str String * @param defaultValue 默认值 * @return byte */ public static byte asByte(String str, byte defaultValue) { try { return Byte.decode(str.trim()).byteValue(); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 char * @param str String * @return char */ public static char asCharacter(String str) { return asCharacter(str, '\0'); } /** * 将 String 解码为 Character * @param str String * @param defaultValue 默认值 * @return Character */ public static Character asCharacter(String str, Character defaultValue) { try { return new Character(str.trim().charAt(0)); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (IndexOutOfBoundsException indexoutofboundsexception) { return defaultValue; } } /** * 将 String 解码为 char * @param str String * @param defaultValue 默认值 * @return char */ public static char asCharacter(String str, char defaultValue) { try { return str.trim().charAt(0); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (IndexOutOfBoundsException indexoutofboundsexception) { return defaultValue; } } /** * 将 String 解码为 double * @param str String * @return double */ public static double asDouble(String str) { return asDouble(str, 0.0D); } /** * 将 String 解码为 Double * @param str String * @param defaultValue 默认值 * @return Double */ public static Double asDouble(String str, Double defaultValue) { try { return new Double(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 double * @param str String * @param defaultValue 默认值 * @return double */ public static double asDouble(String str, double defaultValue) { try { return (new Double(str.trim())).doubleValue(); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 float * @param str String * @return float */ public static float asFloat(String str) { return asFloat(str, 0.0F); } /** * 将 String 解码为 Float * @param str String * @param defaultValue 默认值 * @return Float */ public static Float asFloat(String str, Float defaultValue) { try { return new Float(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 float * @param str String * @param defaultValue 默认值 * @return float */ public static float asFloat(String str, float defaultValue) { try { return (new Float(str.trim())).floatValue(); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 int * @param str String * @return int */ public static int asInteger(String str) { return asInteger(str, 0); } /** * 将 String 解码为 Integer * @param str String * @param defaultValue 默认值 * @return Integer */ public static Integer asInteger(String str, Integer defaultValue) { try { return Integer.decode(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 int * @param str String * @param defaultValue 默认值 * @return int */ public static int asInteger(String str, int defaultValue) { try { return Integer.decode(str.trim()).intValue(); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 long * @param str String * @return long */ public static long asLong(String str) { return asLong(str, 0L); } /** * 将 String 解码为 Long * @param str String * @param defaultValue 默认值 * @return Long */ public static Long asLong(String str, Long defaultValue) { try { return Long.decode(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 long * @param str String * @param defaultValue 默认值 * @return long */ public static long asLong(String str, long defaultValue) { try { return Long.decode(str.trim()).longValue(); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 short * @param str String * @return short */ public static short asShort(String str) { return asShort(str, (short) 0); } /** * 将 String 解码为 Short * @param str String * @param defaultValue 默认值 * @return Short */ public static Short asShort(String str, Short defaultValue) { try { return Short.decode(str.trim()); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 short * @param str String * @param defaultValue 默认值 * @return short */ public static short asShort(String str, short defaultValue) { try { return Short.decode(str.trim()).shortValue(); } catch (NullPointerException nullpointerexception) { return defaultValue; } catch (NumberFormatException numberformatexception) { return defaultValue; } } /** * 将 String 解码为 String * @param str String * @return String */ public static String asString(String str) { return asString(str, "", ""); } /** * 将 String 解码为 String * @param str String * @param defaultValue 默认值 * @return String */ public static String asString(String str, String defaultValue) { return asString(str, defaultValue, defaultValue); } /** * 将 String 解码为 String * @param str String * @param defaultValue 默认值 * @param emptyStringValue ""对应的值 * @return String */ public static String asString(String str, String defaultValue, String emptyStringValue) { try { return str.equals("") ? emptyStringValue : str; } catch (NullPointerException nullpointerexception) { return defaultValue; } } /** * 将 String 解码为 Date * @param str String * @return Date */ public static Date asDate(String str) { return asDate(str, new Date(), null); } /** * 将 String 解码为 Date * @param str String * @param defaultValue 默认值 * @return Date */ public static Date asDate(String str, Date defaultValue) { return asDate(str, defaultValue, null); } /** * 将 String 解码为 Date * @param str String * @param defaultValue 默认值 * @param pattern String * @return Date */ public static Date asDate(String str, Date defaultValue, String pattern) { DateFormat formatter = new SimpleDateFormat(pattern != null ? pattern : DEFAULT_DATE_PATTTERN); try { return formatter.parse(str); } catch (ParseException parseexception) { return defaultValue; } catch (NullPointerException nullpointerexception) { return defaultValue; } } /** * 将String按指定的type进行解码 * @param type 指定类型 (基本类型对象或Date) * @param str String * @return Object */ public static Object asType(Class type, String str) { if (type.isAssignableFrom(java.lang.String.class)) { return asString(str, "", ""); } if (type.isAssignableFrom(java.lang.Integer.class) || type.equals(Integer.TYPE)) { return asInteger(str, new Integer(0)); } if (type.isAssignableFrom(java.lang.Double.class) || type.equals(Double.TYPE)) { return asDouble(str, new Double(0.0D)); } if (type.isAssignableFrom(java.lang.Boolean.class) || type.equals(Boolean.TYPE)) { return asBoolean(str, Boolean.FALSE); } if (type.isAssignableFrom(java.lang.Float.class) || type.equals(Float.TYPE)) { return asFloat(str, new Float(0.0F)); } if (type.isAssignableFrom(java.lang.Long.class) || type.equals(Long.TYPE)) { return asLong(str, new Long(0L)); } if (type.isAssignableFrom(java.lang.Short.class) || type.equals(Short.TYPE)) { return asShort(str, new Short((short) 0)); } if (type.isAssignableFrom(java.lang.Byte.class) || type.equals(Byte.TYPE)) { return asByte(str, new Byte((byte) 0)); } if (type.isAssignableFrom(java.lang.Character.class) || type.equals(Character.TYPE)) { return asCharacter(str, new Character('\0')); } if (type.isAssignableFrom(java.math.BigDecimal.class)) { return asBigDecimal(str, new BigDecimal(BigInteger.ZERO)); } if (type.isAssignableFrom(java.math.BigInteger.class)) { return asBigInteger(str, BigInteger.ZERO); } if (type.isAssignableFrom(java.sql.Date.class)) { return java.sql.Date.valueOf(str); } if (type.isAssignableFrom(java.sql.Timestamp.class)) { return java.sql.Timestamp.valueOf(str); } if (type.isAssignableFrom(java.util.Date.class)) { return asDate(str, new Date(), null); } else { return null; } } /** * 将String按指定的type进行解码 * @param type 指定类型 (基本类型对象或Date) * @param str String * @param defaultValue 默认值 (str为null或""时的值) * @return Object */ public static Object asType(Class type, String str, Object defaultValue) { if (type.isAssignableFrom(java.lang.String.class)) { return asString(str, (String) defaultValue); } if (type.isAssignableFrom(java.lang.Integer.class) || type.equals(Integer.TYPE)) { return asInteger(str, (Integer) defaultValue); } if (type.isAssignableFrom(java.lang.Double.class) || type.equals(Double.TYPE)) { return asDouble(str, (Double) defaultValue); } if (type.isAssignableFrom(java.lang.Boolean.class) || type.equals(Boolean.TYPE)) { return asBoolean(str, (Boolean) defaultValue); } if (type.isAssignableFrom(java.lang.Float.class) || type.equals(Float.TYPE)) { return asFloat(str, (Float) defaultValue); } if (type.isAssignableFrom(java.lang.Long.class) || type.equals(Long.TYPE)) { return asLong(str, (Long) defaultValue); } if (type.isAssignableFrom(java.lang.Short.class) || type.equals(Short.TYPE)) { return asShort(str, (Short) defaultValue); } if (type.isAssignableFrom(java.lang.Byte.class) || type.equals(Byte.TYPE)) { return asByte(str, (Byte) defaultValue); } if (type.isAssignableFrom(java.lang.Character.class) || type.equals(Character.TYPE)) { return asCharacter(str, (Character) defaultValue); } if (type.isAssignableFrom(java.math.BigDecimal.class)) { return asBigDecimal(str, (BigDecimal) defaultValue); } if (type.isAssignableFrom(java.math.BigInteger.class)) { return asBigInteger(str, (BigInteger) defaultValue); } if(str==null||str.trim().equals("")){ return null; } if (type.isAssignableFrom(java.sql.Date.class)) { return java.sql.Date.valueOf(str); } if (type.isAssignableFrom(java.sql.Timestamp.class)) { return java.sql.Timestamp.valueOf(str); } if (type.isAssignableFrom(java.util.Date.class)) { return asDate(str, (Date) defaultValue); } else { return null; } } /** * 将Object按指定的type进行解码 * @param type 指定类型 * @param obj Object * @return Object */ public static Object asType(Class type, Object obj) { if (!type.equals(java.lang.String.class) && type.isInstance(obj)) { return obj; } if (obj == null || (obj instanceof String)) { return asType(type, (String) obj); } if ((obj instanceof Date) && (java.lang.String.class).isAssignableFrom(type)) { return (new SimpleDateFormat(DEFAULT_DATE_PATTTERN)).format((Date) obj); } if ((obj instanceof Number) && (java.lang.Number.class).isAssignableFrom(type)) { Number num = (Number) obj; if (type.isAssignableFrom(java.lang.Number.class)) { return num; } if (type.isAssignableFrom(java.lang.Integer.class)) { return new Integer(num.intValue()); } if (type.isAssignableFrom(java.lang.Double.class)) { return new Double(num.doubleValue()); } if (type.isAssignableFrom(java.lang.Float.class)) { return new Float(num.floatValue()); } if (type.isAssignableFrom(java.lang.Long.class)) { return new Long(num.longValue()); } if (type.isAssignableFrom(java.lang.Short.class)) { return new Short(num.shortValue()); } if (type.isAssignableFrom(java.lang.Byte.class)) { return new Byte(num.byteValue()); } if (type.isAssignableFrom(java.math.BigInteger.class)) { return (new BigDecimal(num.toString())).toBigInteger(); } if (type.isAssignableFrom(java.math.BigDecimal.class)) { return new BigDecimal(num.toString()); } } return asType(type, obj.toString()); } /** * 将Object按指定的type进行解码 * @param type 指定类型 * @param obj Object * @param defaultValue 默认值 * @return Object */ public static Object asType(Class type, Object obj, Object defaultValue) { if (!type.equals(java.lang.String.class) && type.isInstance(obj)) { return obj; } if (obj == null || (obj instanceof String)) { return asType(type, (String) obj, defaultValue); } if ((obj instanceof Date) && (java.lang.String.class).isAssignableFrom(type)) { return (new SimpleDateFormat(DEFAULT_DATE_PATTTERN)).format((Date) obj); } if ((obj instanceof Number) && (java.lang.Number.class).isAssignableFrom(type)) { Number num = (Number) obj; if (type.isAssignableFrom(java.lang.Number.class)) { return num; } if (type.isAssignableFrom(java.lang.Integer.class)) { return new Integer(num.intValue()); } if (type.isAssignableFrom(java.lang.Double.class)) { return new Double(num.doubleValue()); } if (type.isAssignableFrom(java.lang.Float.class)) { return new Float(num.floatValue()); } if (type.isAssignableFrom(java.lang.Long.class)) { return new Long(num.longValue()); } if (type.isAssignableFrom(java.lang.Short.class)) { return new Short(num.shortValue()); } if (type.isAssignableFrom(java.lang.Byte.class)) { return new Byte(num.byteValue()); } if (type.isAssignableFrom(java.math.BigInteger.class)) { return (new BigDecimal(num.toString())).toBigInteger(); } if (type.isAssignableFrom(java.math.BigDecimal.class)) { return new BigDecimal(num.toString()); } } return asType(type, obj.toString(), defaultValue); } /** * 获取className * @param cls Class * @return String */ public static String getClassName(Class cls) { return getClassName(cls.getName()); } /** * 根据给定的应用全名获取类名 * @param fullName 应用全名 * @return String */ public static String getClassName(String fullName) { if (fullName == null) { return null; } else { fullName = fullName.trim(); String className = fullName.substring(fullName.lastIndexOf('.') + 1).replace('$', '.').trim(); return className.equals("") ? null : className; } } /** * 指定解析为false的字符串 */ private static String FALSE_STRINGS[] = {"false", "null", "nul", "off", "no", "n"}; /** * 默认日期模式 */ private static String DEFAULT_DATE_PATTTERN = "yyyy-MM-dd"; /** * 将字符串转换成整数 * @param str String * @return int */ public static int ConvertToInt(String str) { return CommonUtil.parseInt(str); } /** * 将字符串转换成整数对象 * @param str String * @return Integer */ public static Integer ConvertToInteger(String str) { Integer num; try { num = CommonUtil.parseInt(str); } catch (Exception e) { num = 0; } return num; } /** * 将字符串转换成长整数 * @param str String * @return long */ public static long ConvertToLong(String str) { long num; try { num = Long.parseLong(str); } catch (Exception e) { num = 0L; } return num; } /** * 将字符串转换成长整数对象 * @param str String * @return Long */ public static Long ConvertToLonger(String str) { Long num; try { num = Long.parseLong(str); } catch (Exception e) { num = 0L; } return num; } }