ConvertUtil.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package com.usky.cockpit.util;
  2. import cn.hutool.core.util.StrUtil;
  3. import java.math.BigDecimal;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. /**
  7. * 类型转换器
  8. *
  9. * @author fc
  10. *
  11. */
  12. public class ConvertUtil {
  13. /**
  14. * 转换为字符串<br>
  15. * 如果给定的值为null,或者转换失败,返回默认值<br>
  16. * 转换失败不会报错
  17. *
  18. * @param value 被转换的值
  19. * @param defaultValue 转换错误时的默认值
  20. * @return 结果
  21. */
  22. public static String toStr(Object value, String defaultValue) {
  23. if (null == value) {
  24. return defaultValue;
  25. }
  26. if (value instanceof String) {
  27. return (String) value;
  28. }
  29. return value.toString();
  30. }
  31. /**
  32. * 转换为Integer数组<br>
  33. * @param split 被转换的值
  34. * @return 结果
  35. */
  36. public static Integer[] toIntArray(String str) {
  37. return toIntArray(",", str);
  38. }
  39. /**
  40. * 转换为Integer数组<br>
  41. * @param split 分隔符
  42. * @param split 被转换的值
  43. * @return 结果
  44. */
  45. public static Integer[] toIntArray(String split, String str) {
  46. if (StrUtil.isEmpty(str)) {
  47. return new Integer[] {};
  48. }
  49. String[] strings = str.split(split);
  50. final Integer[] ints = new Integer[strings.length];
  51. for (int i = 0; i < strings.length; i++) {
  52. final Integer v = toInt(strings[i], 0);
  53. ints[i] = v;
  54. }
  55. return ints;
  56. }
  57. /**
  58. * 转换为int<br>
  59. * 如果给定的值为空,或者转换失败,返回默认值<br>
  60. * 转换失败不会报错
  61. * @param value 被转换的值
  62. * @param defaultValue 转换错误时的默认值
  63. * @return 结果
  64. */
  65. public static Integer toInt(Object value, Integer defaultValue) {
  66. if (value == null) {
  67. return defaultValue;
  68. }
  69. if (value instanceof Integer) {
  70. return (Integer) value;
  71. }
  72. if (value instanceof Number) {
  73. return ((Number) value).intValue();
  74. }
  75. final String valueStr = toStr(value, null);
  76. if (StrUtil.isEmpty(valueStr)) {
  77. return defaultValue;
  78. }
  79. try {
  80. return Integer.parseInt(valueStr.trim());
  81. } catch (Exception e) {
  82. return defaultValue;
  83. }
  84. }
  85. /**
  86. * 转换为List<String>数组<br>
  87. * @param split 被转换的值
  88. * @return 结果
  89. */
  90. public static List<String> toListStrArray(String str) {
  91. String[] stringArray = toStrArray(str);
  92. List<String> stringB = Arrays.asList(stringArray);
  93. return stringB;
  94. }
  95. /**
  96. * 转换为List<Long>数组<br>
  97. * @param split 被转换的值
  98. * @return 结果
  99. */
  100. public static List<Long> toListLongArray(String str) {
  101. Long[] stringArray = toLongArray(str);
  102. List<Long> stringB = Arrays.asList(stringArray);
  103. return stringB;
  104. }
  105. /**
  106. * 转换为String数组<br>
  107. * @param split 被转换的值
  108. * @return 结果
  109. */
  110. public static String[] toStrArray(String str) {
  111. return toStrArray(",", str);
  112. }
  113. /**
  114. * 转换为String数组<br>
  115. *
  116. * @param split 分隔符
  117. * @param split 被转换的值
  118. * @return 结果
  119. */
  120. public static String[] toStrArray(String split, String str) {
  121. return str.split(split);
  122. }
  123. /**
  124. * 转换为Long数组<br>
  125. *
  126. * @param split 被转换的值
  127. * @return 结果
  128. */
  129. public static Long[] toLongArray(String str)
  130. {
  131. return toLongArray(",", str);
  132. }
  133. /**
  134. * 转换为Long数组<br>
  135. *
  136. * @param isIgnoreConvertError 是否忽略转换错误,忽略则给值null
  137. * @param values 被转换的值
  138. * @return 结果
  139. */
  140. public static Long[] toLongArray(String split, String str)
  141. {
  142. if (StrUtil.isEmpty(str))
  143. {
  144. return new Long[] {};
  145. }
  146. String[] arr = str.split(split);
  147. final Long[] longs = new Long[arr.length];
  148. for (int i = 0; i < arr.length; i++)
  149. {
  150. final Long v = toLong(arr[i], null);
  151. longs[i] = v;
  152. }
  153. return longs;
  154. }
  155. /**
  156. * 转换为long<br>
  157. * 如果给定的值为空,或者转换失败,返回默认值<br>
  158. * 转换失败不会报错
  159. *
  160. * @param value 被转换的值
  161. * @param defaultValue 转换错误时的默认值
  162. * @return 结果
  163. */
  164. public static Long toLong(Object value, Long defaultValue)
  165. {
  166. if (value == null)
  167. {
  168. return defaultValue;
  169. }
  170. if (value instanceof Long)
  171. {
  172. return (Long) value;
  173. }
  174. if (value instanceof Number)
  175. {
  176. return ((Number) value).longValue();
  177. }
  178. final String valueStr = toStr(value, null);
  179. if (StrUtil.isEmpty(valueStr))
  180. {
  181. return defaultValue;
  182. }
  183. try
  184. {
  185. // 支持科学计数法
  186. return new BigDecimal(valueStr.trim()).longValue();
  187. }
  188. catch (Exception e)
  189. {
  190. return defaultValue;
  191. }
  192. }
  193. /**
  194. * 转换为BigDecimal<br>
  195. * 如果给定的值为空,或者转换失败,返回默认值<br>
  196. * 转换失败不会报错
  197. *
  198. * @param value 被转换的值
  199. * @param defaultValue 转换错误时的默认值
  200. * @return 结果
  201. */
  202. public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue)
  203. {
  204. if (value == null)
  205. {
  206. return defaultValue;
  207. }
  208. if (value instanceof BigDecimal)
  209. {
  210. return (BigDecimal) value;
  211. }
  212. if (value instanceof Long)
  213. {
  214. return new BigDecimal((Long) value);
  215. }
  216. if (value instanceof Double)
  217. {
  218. return new BigDecimal((Double) value);
  219. }
  220. if (value instanceof Integer)
  221. {
  222. return new BigDecimal((Integer) value);
  223. }
  224. final String valueStr = toStr(value, null);
  225. if (StrUtil.isEmpty(valueStr))
  226. {
  227. return defaultValue;
  228. }
  229. try
  230. {
  231. return new BigDecimal(valueStr);
  232. }
  233. catch (Exception e)
  234. {
  235. return defaultValue;
  236. }
  237. }
  238. }