1、String格式化-工具类

  1. /**
  2. * 字符串工具类, 继承org.apache.commons.lang3.StringUtils类
  3. */
  4. public class StringUtils extends org.apache.commons.lang3.StringUtils {
  5. private static final char SEPARATOR = '_';
  6. private static final String CHARSET_NAME = "UTF-8";
  7. /**
  8. * 转换为字节数组
  9. * @param str
  10. * @return
  11. */
  12. public static byte[] getBytes(String str){
  13. if (str != null){
  14. try {
  15. return str.getBytes(CHARSET_NAME);
  16. } catch (UnsupportedEncodingException e) {
  17. return null;
  18. }
  19. }else{
  20. return null;
  21. }
  22. }
  23. /**
  24. * 转换为Boolean类型
  25. * 'true', 'on', 'y', 't', 'yes' or '1' (case insensitive) will return true. Otherwise, false is returned.
  26. */
  27. public static Boolean toBoolean(final Object val){
  28. if (val == null){
  29. return false;
  30. }
  31. return BooleanUtils.toBoolean(val.toString()) || "1".equals(val.toString());
  32. }
  33. /**
  34. * 转换为字节数组
  35. * @param bytes
  36. * @return
  37. */
  38. public static String toString(byte[] bytes){
  39. try {
  40. return new String(bytes, CHARSET_NAME);
  41. } catch (UnsupportedEncodingException e) {
  42. return EMPTY;
  43. }
  44. }
  45. /**
  46. * 如果对象为空,则使用defaultVal值
  47. * see: ObjectUtils.toString(obj, defaultVal)
  48. * @param obj
  49. * @param defaultVal
  50. * @return
  51. */
  52. public static String toString(final Object obj, final String defaultVal) {
  53. return obj == null ? defaultVal : obj.toString();
  54. }
  55. /**
  56. * 是否包含字符串
  57. * @param str 验证字符串
  58. * @param strs 字符串组
  59. * @return 包含返回true
  60. */
  61. public static boolean inString(String str, String... strs){
  62. if (str != null){
  63. for (String s : strs){
  64. if (str.equals(trim(s))){
  65. return true;
  66. }
  67. }
  68. }
  69. return false;
  70. }
  71. // 利用正则表达式的预编译功能
  72. private static Pattern HTML_PATTERN = Pattern.compile("<.+?>");
  73. /**
  74. * 替换掉HTML标签方法
  75. */
  76. public static String replaceHtml(String html) {
  77. if (isBlank(html)){
  78. return "";
  79. }
  80. String regEx = "<.+?>";
  81. Pattern p = Pattern.compile(regEx);
  82. Matcher m = p.matcher(html);
  83. String s = m.replaceAll("");
  84. return s;
  85. }
  86. /**
  87. * 替换为手机识别的HTML,去掉样式及属性,保留回车。
  88. * @param html
  89. * @return
  90. */
  91. public static String replaceMobileHtml(String html){
  92. if (html == null){
  93. return "";
  94. }
  95. return html.replaceAll("<([a-z]+?)\\s+?.*?>", "<$1>");
  96. }
  97. /**
  98. * 缩略字符串(不区分中英文字符)
  99. * @param str 目标字符串
  100. * @param length 截取长度
  101. * @return
  102. */
  103. public static String abbr(String str, int length) {
  104. if (str == null) {
  105. return "";
  106. }
  107. try {
  108. StringBuilder sb = new StringBuilder();
  109. int currentLength = 0;
  110. for (char c : replaceHtml(StringEscapeUtils.unescapeHtml4(str)).toCharArray()) {
  111. currentLength += String.valueOf(c).getBytes("GBK").length;
  112. if (currentLength <= length - 3) {
  113. sb.append(c);
  114. } else {
  115. sb.append("...");
  116. break;
  117. }
  118. }
  119. return sb.toString();
  120. } catch (UnsupportedEncodingException e) {
  121. e.printStackTrace();
  122. }
  123. return "";
  124. }
  125. /**
  126. * 转换为Double类型
  127. */
  128. public static Double toDouble(Object val){
  129. if (val == null){
  130. return 0D;
  131. }
  132. try {
  133. return Double.valueOf(trim(val.toString()));
  134. } catch (Exception e) {
  135. return 0D;
  136. }
  137. }
  138. /**
  139. * 转换为Float类型
  140. */
  141. public static Float toFloat(Object val){
  142. return toDouble(val).floatValue();
  143. }
  144. /**
  145. * 转换为Long类型
  146. */
  147. public static Long toLong(Object val){
  148. return toDouble(val).longValue();
  149. }
  150. /**
  151. * 转换为Integer类型
  152. */
  153. public static Integer toInteger(Object val){
  154. return toLong(val).intValue();
  155. }
  156. /**
  157. * 获得用户远程地址
  158. */
  159. public static String getRemoteAddr(HttpServletRequest request){
  160. String remoteAddr = request.getHeader("X-Real-IP");
  161. if (isNotBlank(remoteAddr)) {
  162. remoteAddr = request.getHeader("X-Forwarded-For");
  163. }else if (isNotBlank(remoteAddr)) {
  164. remoteAddr = request.getHeader("Proxy-Client-IP");
  165. }else if (isNotBlank(remoteAddr)) {
  166. remoteAddr = request.getHeader("WL-Proxy-Client-IP");
  167. }
  168. return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
  169. }
  170. /**
  171. * 驼峰命名法工具
  172. * @return
  173. * toCamelCase("hello_world") == "helloWorld"
  174. * toCapitalizeCamelCase("hello_world") == "HelloWorld"
  175. * toUnderScoreCase("helloWorld") = "hello_world"
  176. */
  177. public static String toCamelCase(String s) {
  178. if (s == null) {
  179. return null;
  180. }
  181. s = s.toLowerCase();
  182. StringBuilder sb = new StringBuilder(s.length());
  183. boolean upperCase = false;
  184. for (int i = 0; i < s.length(); i++) {
  185. char c = s.charAt(i);
  186. if (c == SEPARATOR) {
  187. upperCase = true;
  188. } else if (upperCase) {
  189. sb.append(Character.toUpperCase(c));
  190. upperCase = false;
  191. } else {
  192. sb.append(c);
  193. }
  194. }
  195. return sb.toString();
  196. }
  197. /**
  198. * 驼峰命名法工具
  199. * @return
  200. * toCamelCase("hello_world") == "helloWorld"
  201. * toCapitalizeCamelCase("hello_world") == "HelloWorld"
  202. * toUnderScoreCase("helloWorld") = "hello_world"
  203. */
  204. public static String toCapitalizeCamelCase(String s) {
  205. if (s == null) {
  206. return null;
  207. }
  208. s = toCamelCase(s);
  209. return s.substring(0, 1).toUpperCase() + s.substring(1);
  210. }
  211. /**
  212. * 驼峰命名法工具
  213. * @return
  214. * toCamelCase("hello_world") == "helloWorld"
  215. * toCapitalizeCamelCase("hello_world") == "HelloWorld"
  216. * toUnderScoreCase("helloWorld") = "hello_world"
  217. */
  218. public static String toUnderScoreCase(String s) {
  219. if (s == null) {
  220. return null;
  221. }
  222. StringBuilder sb = new StringBuilder();
  223. boolean upperCase = false;
  224. for (int i = 0; i < s.length(); i++) {
  225. char c = s.charAt(i);
  226. boolean nextUpperCase = true;
  227. if (i < (s.length() - 1)) {
  228. nextUpperCase = Character.isUpperCase(s.charAt(i + 1));
  229. }
  230. if ((i > 0) && Character.isUpperCase(c)) {
  231. if (!upperCase || !nextUpperCase) {
  232. sb.append(SEPARATOR);
  233. }
  234. upperCase = true;
  235. } else {
  236. upperCase = false;
  237. }
  238. sb.append(Character.toLowerCase(c));
  239. }
  240. return sb.toString();
  241. }
  242. /**
  243. * 转换为JS获取对象值,生成三目运算返回结果
  244. * @param objectString 对象串
  245. * 例如:row.user.id
  246. * 返回:!row?'':!row.user?'':!row.user.id?'':row.user.id
  247. */
  248. public static String jsGetVal(String objectString){
  249. StringBuilder result = new StringBuilder();
  250. StringBuilder val = new StringBuilder();
  251. String[] vals = split(objectString, ".");
  252. for (int i=0; i<vals.length; i++){
  253. val.append("." + vals[i]);
  254. result.append("!"+(val.substring(1))+"?'':");
  255. }
  256. result.append(val.substring(1));
  257. return result.toString();
  258. }
  259. /**
  260. * str == null || str.length() == 0
  261. * @param str
  262. * @return
  263. */
  264. public static boolean isEmpty(String str) {
  265. if (str == null || str.length() == 0) {
  266. return true;
  267. }
  268. return false;
  269. }
  270. /**
  271. * !isEmpty(str)
  272. * @param str
  273. * @return
  274. */
  275. public static boolean isNotEmpty(String str) {
  276. return !isEmpty(str);
  277. }
  278. /**
  279. * null值返回""
  280. * str == null ? "" : str
  281. * @param str
  282. * @return
  283. */
  284. public static String isNullToStr(String str){
  285. return str == null ? "" : str;
  286. }
  287. }