123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- package com.usky.cockpit.util;
- import cn.hutool.core.util.StrUtil;
- import java.math.BigDecimal;
- import java.util.Arrays;
- import java.util.List;
- /**
- * 类型转换器
- *
- * @author fc
- *
- */
- public class ConvertUtil {
- /**
- * 转换为字符串<br>
- * 如果给定的值为null,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static String toStr(Object value, String defaultValue) {
- if (null == value) {
- return defaultValue;
- }
- if (value instanceof String) {
- return (String) value;
- }
- return value.toString();
- }
- /**
- * 转换为Integer数组<br>
- * @param split 被转换的值
- * @return 结果
- */
- public static Integer[] toIntArray(String str) {
- return toIntArray(",", str);
- }
- /**
- * 转换为Integer数组<br>
- * @param split 分隔符
- * @param split 被转换的值
- * @return 结果
- */
- public static Integer[] toIntArray(String split, String str) {
- if (StrUtil.isEmpty(str)) {
- return new Integer[] {};
- }
- String[] strings = str.split(split);
- final Integer[] ints = new Integer[strings.length];
- for (int i = 0; i < strings.length; i++) {
- final Integer v = toInt(strings[i], 0);
- ints[i] = v;
- }
- return ints;
- }
- /**
- * 转换为int<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Integer toInt(Object value, Integer defaultValue) {
- if (value == null) {
- return defaultValue;
- }
- if (value instanceof Integer) {
- return (Integer) value;
- }
- if (value instanceof Number) {
- return ((Number) value).intValue();
- }
- final String valueStr = toStr(value, null);
- if (StrUtil.isEmpty(valueStr)) {
- return defaultValue;
- }
- try {
- return Integer.parseInt(valueStr.trim());
- } catch (Exception e) {
- return defaultValue;
- }
- }
- /**
- * 转换为List<String>数组<br>
- * @param split 被转换的值
- * @return 结果
- */
- public static List<String> toListStrArray(String str) {
- String[] stringArray = toStrArray(str);
- List<String> stringB = Arrays.asList(stringArray);
- return stringB;
- }
- /**
- * 转换为List<Long>数组<br>
- * @param split 被转换的值
- * @return 结果
- */
- public static List<Long> toListLongArray(String str) {
- Long[] stringArray = toLongArray(str);
- List<Long> stringB = Arrays.asList(stringArray);
- return stringB;
- }
- /**
- * 转换为String数组<br>
- * @param split 被转换的值
- * @return 结果
- */
- public static String[] toStrArray(String str) {
- return toStrArray(",", str);
- }
- /**
- * 转换为String数组<br>
- *
- * @param split 分隔符
- * @param split 被转换的值
- * @return 结果
- */
- public static String[] toStrArray(String split, String str) {
- return str.split(split);
- }
- /**
- * 转换为Long数组<br>
- *
- * @param split 被转换的值
- * @return 结果
- */
- public static Long[] toLongArray(String str)
- {
- return toLongArray(",", str);
- }
- /**
- * 转换为Long数组<br>
- *
- * @param isIgnoreConvertError 是否忽略转换错误,忽略则给值null
- * @param values 被转换的值
- * @return 结果
- */
- public static Long[] toLongArray(String split, String str)
- {
- if (StrUtil.isEmpty(str))
- {
- return new Long[] {};
- }
- String[] arr = str.split(split);
- final Long[] longs = new Long[arr.length];
- for (int i = 0; i < arr.length; i++)
- {
- final Long v = toLong(arr[i], null);
- longs[i] = v;
- }
- return longs;
- }
- /**
- * 转换为long<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static Long toLong(Object value, Long defaultValue)
- {
- if (value == null)
- {
- return defaultValue;
- }
- if (value instanceof Long)
- {
- return (Long) value;
- }
- if (value instanceof Number)
- {
- return ((Number) value).longValue();
- }
- final String valueStr = toStr(value, null);
- if (StrUtil.isEmpty(valueStr))
- {
- return defaultValue;
- }
- try
- {
- // 支持科学计数法
- return new BigDecimal(valueStr.trim()).longValue();
- }
- catch (Exception e)
- {
- return defaultValue;
- }
- }
-
- /**
- * 转换为BigDecimal<br>
- * 如果给定的值为空,或者转换失败,返回默认值<br>
- * 转换失败不会报错
- *
- * @param value 被转换的值
- * @param defaultValue 转换错误时的默认值
- * @return 结果
- */
- public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue)
- {
- if (value == null)
- {
- return defaultValue;
- }
- if (value instanceof BigDecimal)
- {
- return (BigDecimal) value;
- }
- if (value instanceof Long)
- {
- return new BigDecimal((Long) value);
- }
- if (value instanceof Double)
- {
- return new BigDecimal((Double) value);
- }
- if (value instanceof Integer)
- {
- return new BigDecimal((Integer) value);
- }
- final String valueStr = toStr(value, null);
- if (StrUtil.isEmpty(valueStr))
- {
- return defaultValue;
- }
- try
- {
- return new BigDecimal(valueStr);
- }
- catch (Exception e)
- {
- return defaultValue;
- }
- }
- }
|