StringUtils.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. package com.hcks.cmfds.commons.util;
  2. import java.io.UnsupportedEncodingException;
  3. import java.math.BigDecimal;
  4. import java.math.RoundingMode;
  5. import java.sql.Timestamp;
  6. import java.text.ParseException;
  7. import java.text.SimpleDateFormat;
  8. import java.util.ArrayList;
  9. import java.util.Date;
  10. import java.util.List;
  11. import java.util.UUID;
  12. import java.util.regex.Matcher;
  13. import java.util.regex.Pattern;
  14. /**
  15. * @Author 刘厦(liusha.information@gmail.com)
  16. * @Date 创建时间:May 16, 2011 12:25:13 PM
  17. * @Version 0.0.0 类说明: 字符串操作工具类
  18. */
  19. public class StringUtils {
  20. public static final String SIMPLE_DATE_FORMAT = "yyyy-MM-dd";
  21. public static final String SIMPLE_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
  22. public static final String[] TRUE_STRINGS = new String[] { "true", "yes", "on", "1", "y" };
  23. /**
  24. *
  25. */
  26. public static final String REGEX_IMG_SRC = "src=\"(.*?)\"";
  27. /**
  28. * 转换中文参数
  29. *
  30. * @param str
  31. * @return
  32. */
  33. public static String convertEncoding(String str) {
  34. if (str == null)
  35. return str;
  36. try {
  37. return new String(str.getBytes("ISO-8859-1"), "UTF-8");
  38. } catch (UnsupportedEncodingException e) {
  39. e.printStackTrace();
  40. return str;
  41. }
  42. }
  43. /**
  44. * 获取字符串中所有图片的文件名
  45. *
  46. * @param memo
  47. * @return
  48. */
  49. public static List<String> getImg(String memo) {
  50. List<String> list = new ArrayList<String>();
  51. Pattern pa = Pattern.compile(REGEX_IMG_SRC, Pattern.DOTALL);
  52. Matcher matcher = pa.matcher(memo);
  53. while (matcher.find()) {
  54. list.add(matcher.group());
  55. }
  56. return list;
  57. }
  58. private StringUtils() {
  59. }
  60. /**
  61. * 串接字符串(通过 StringBuilder)
  62. *
  63. * @param strs
  64. * @return
  65. */
  66. public static String concat(String... strs) {
  67. if (strs == null)
  68. return null;
  69. StringBuilder buff = new StringBuilder();
  70. for (int i = 0; i < strs.length; i++) {
  71. buff.append(strs[i]);
  72. }
  73. return buff.toString();
  74. }
  75. /**
  76. * 是否为空串
  77. *
  78. * @param obj
  79. * @return
  80. */
  81. public static boolean empty(Object obj) {
  82. if (obj == null)
  83. return true;
  84. String str;
  85. if (obj instanceof String) {
  86. str = (String) obj;
  87. } else {
  88. str = obj.toString();
  89. }
  90. return str.length() == 0;
  91. }
  92. /**
  93. * 是否不为空串
  94. *
  95. * @param obj
  96. * @return
  97. */
  98. public static boolean notEmp(Object obj) {
  99. return !empty(obj);
  100. }
  101. /**
  102. * 转化为int 失败的话返回默认值
  103. *
  104. * @param str
  105. * @param defaultValue
  106. * @return
  107. */
  108. public static int toInt(String str, int defaultValue) {
  109. try {
  110. return Integer.parseInt(str);
  111. } catch (NumberFormatException e) {
  112. return defaultValue;
  113. }
  114. }
  115. public static int toInt(String str) {
  116. return toInt(str, 0);
  117. }
  118. public static float toFloat(String str) {
  119. return toFloat(str, 0);
  120. }
  121. /**
  122. * 转化为float 失败的话返回默认值
  123. *
  124. * @param str
  125. * @param defaultValue
  126. * @return
  127. */
  128. public static float toFloat(String str, float defaultValue) {
  129. try {
  130. return Float.parseFloat(str);
  131. } catch (NumberFormatException e) {
  132. return defaultValue;
  133. }
  134. }
  135. public static double toDouble(String str) {
  136. return toDouble(str, 0);
  137. }
  138. /**
  139. * 转化为double 失败的话返回默认值
  140. *
  141. * @param str
  142. * @param defaultValue
  143. * @return
  144. */
  145. public static double toDouble(String str, double defaultValue) {
  146. try {
  147. return Double.parseDouble(str);
  148. } catch (NumberFormatException e) {
  149. return defaultValue;
  150. }
  151. }
  152. public static long toLong(String str) {
  153. return toLong(str, 0);
  154. }
  155. /**
  156. * 转化为long 失败的话返回默认值
  157. *
  158. * @param str
  159. * @param defaultValue
  160. * @return
  161. */
  162. public static long toLong(String str, long defaultValue) {
  163. try {
  164. return Long.parseLong(str);
  165. } catch (NumberFormatException e) {
  166. return defaultValue;
  167. }
  168. }
  169. /**
  170. * 判断字符串"true" 是否表示 true
  171. *
  172. * @param str
  173. * @return
  174. */
  175. public static boolean isTrue(String str) {
  176. if (str == null || str.length() == 0)
  177. return false;
  178. for (int i = 0; i < TRUE_STRINGS.length; i++) {
  179. if (TRUE_STRINGS[i].equalsIgnoreCase(str)) {
  180. return true;
  181. }
  182. }
  183. return false;
  184. }
  185. public static boolean isFalse(String str) {
  186. return !isTrue(str);
  187. }
  188. /**
  189. * Timestamp转换为日期字符串
  190. *
  191. * @param ts
  192. * @return
  193. */
  194. public static String toDate(Timestamp ts) {
  195. if (ts == null)
  196. return "";
  197. SimpleDateFormat df = new SimpleDateFormat(SIMPLE_DATETIME_FORMAT);
  198. return df.format(ts);
  199. }
  200. public static Date formatTimestamp(Timestamp ts) {
  201. Date d1 = new Date(ts.getTime());
  202. String s1 = formatDate(d1, SIMPLE_DATETIME_FORMAT);
  203. return toDate(s1, SIMPLE_DATETIME_FORMAT);
  204. }
  205. /**
  206. * 将字符串解析为Date类型
  207. *
  208. * @param date
  209. * @param pattern
  210. * @return
  211. */
  212. public static Date toDate(String date, String pattern) {
  213. SimpleDateFormat format = new SimpleDateFormat(pattern);
  214. try {
  215. return format.parse(date);
  216. } catch (ParseException e) {
  217. throw new RuntimeException(String.format("Failed to parse the String [%s] to Date.", date), e);
  218. }
  219. }
  220. public static Date toDate(String date) {
  221. return toDate(date, SIMPLE_DATETIME_FORMAT);
  222. }
  223. /**
  224. * 格式化日期到字符串
  225. *
  226. * @param date
  227. * @param pattern
  228. * @return
  229. */
  230. public static String formatDate(Date date, String pattern) {
  231. if (date == null)
  232. return "";
  233. SimpleDateFormat format = new SimpleDateFormat(pattern);
  234. return format.format(date);
  235. }
  236. /**
  237. * 使用默认格式格式化日期到字符串
  238. *
  239. * @param date
  240. * @return
  241. */
  242. public static String formatDate(Date date) {
  243. SimpleDateFormat format = new SimpleDateFormat(SIMPLE_DATE_FORMAT);
  244. return format.format(date);
  245. }
  246. public static double round(double num, int digit) {
  247. Double d1 = new Double(num);
  248. if(d1.isNaN() || d1.isInfinite())
  249. {
  250. return 0.0;
  251. }
  252. return new BigDecimal(num).setScale(digit, RoundingMode.HALF_UP).doubleValue();
  253. }
  254. public static Double round(String num, int digit) {
  255. if(isNumeric(num))
  256. {
  257. Double d1 = new Double(num);
  258. if(d1.isNaN() || d1.isInfinite())
  259. {
  260. return 0.0;
  261. }
  262. return new BigDecimal(num).setScale(digit, RoundingMode.HALF_UP).doubleValue();
  263. }else
  264. {
  265. return null;
  266. }
  267. }
  268. public static int roundToInt(double num) {
  269. return new BigDecimal(num).setScale(0, RoundingMode.HALF_UP).intValue();
  270. }
  271. /**
  272. *
  273. * @方法名称: getUUID
  274. * @描述: 获得UUID
  275. * @参数 @return
  276. * @返回值 String
  277. * @抛出异常
  278. */
  279. public static String getUUID() {
  280. String s = UUID.randomUUID().toString();
  281. // 去掉“-”符号
  282. return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
  283. }
  284. public static String getFomatString(Double str)
  285. {
  286. if(StringUtils.notEmp(str))
  287. {
  288. java.text.DecimalFormat df =new java.text.DecimalFormat("0.00");
  289. return df.format(str);
  290. }else
  291. {
  292. return null;
  293. }
  294. }
  295. /**
  296. * 判断是否为数字字符串
  297. * @param str
  298. * @return
  299. */
  300. public static boolean isNumeric(String str){
  301. Pattern pattern = Pattern.compile("[0-9]*");
  302. if(notEmp(str))
  303. {
  304. Matcher isNum = pattern.matcher(str);
  305. if( !isNum.matches() ){
  306. return false;
  307. }
  308. }else
  309. {
  310. return false;
  311. }
  312. return true;
  313. }
  314. }