场景

转换为字节数组;是否包含字符串;替换掉HTML标签方法;替换为手机识别的HTML,去掉样式及属性,保留回车;

缩略字符串(不区分中英文字符);转换为Double类型;转换为Float类型;转换为Long类型;转换为Integer类型;

获得i18n字符串;获得用户远程地址;驼峰命名法工具;转换为JS获取对象值,生成三目运算返回结果;

通过正则表达式获取内容;

实现

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import javax.servlet.http.HttpServletRequest;import com.google.common.collect.Lists;import org.apache.commons.lang3.StringEscapeUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.LocaleResolver;/*** 字符串工具类, 继承org.apache.commons.lang3.StringUtils类**/
public class StringUtils extends org.apache.commons.lang3.StringUtils {private static final char SEPARATOR = '_';private static final String CHARSET_NAME = "UTF-8";/*** 转换为字节数组** @param str* @return*/public static byte[] getBytes(String str) {if (str != null) {try {return str.getBytes(CHARSET_NAME);} catch (UnsupportedEncodingException e) {return null;}} else {return null;}}/*** 转换为字节数组** @param str* @return*/public static String toString(byte[] bytes) {try {return new String(bytes, CHARSET_NAME);} catch (UnsupportedEncodingException e) {return EMPTY;}}/*** 是否包含字符串** @param str  验证字符串* @param strs 字符串组* @return 包含返回true*/public static boolean inString(String str, String... strs) {if (str != null) {for (String s : strs) {if (str.equals(trim(s))) {return true;}}}return false;}/*** 替换掉HTML标签方法*/public static String replaceHtml(String html) {if (isBlank(html)) {return "";}String regEx = "<.+?>";Pattern p = Pattern.compile(regEx);Matcher m = p.matcher(html);String s = m.replaceAll("");return s;}/*** 替换为手机识别的HTML,去掉样式及属性,保留回车。** @param html* @return*/public static String replaceMobileHtml(String html) {if (html == null) {return "";}return html.replaceAll("<([a-z]+?)\\s+?.*?>", "<$1>");}/*** 替换为手机识别的HTML,去掉样式及属性,保留回车。** @param txt* @return*/public static String toHtml(String txt) {if (txt == null) {return "";}return replace(replace(Encodes.escapeHtml(txt), "\n", "<br/>"), "\t", "&nbsp; &nbsp; ");}/*** 缩略字符串(不区分中英文字符)** @param str    目标字符串* @param length 截取长度* @return*/public static String abbr(String str, int length) {if (str == null) {return "";}try {StringBuilder sb = new StringBuilder();int currentLength = 0;for (char c : replaceHtml(StringEscapeUtils.unescapeHtml4(str)).toCharArray()) {currentLength += String.valueOf(c).getBytes("GBK").length;if (currentLength <= length - 3) {sb.append(c);} else {sb.append("...");break;}}return sb.toString();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return "";}public static String abbr2(String param, int length) {if (param == null) {return "";}StringBuffer result = new StringBuffer();int n = 0;char temp;boolean isCode = false; // 是不是HTML代码boolean isHTML = false; // 是不是HTML特殊字符,如&nbsp;for (int i = 0; i < param.length(); i++) {temp = param.charAt(i);if (temp == '<') {isCode = true;} else if (temp == '&') {isHTML = true;} else if (temp == '>' && isCode) {n = n - 1;isCode = false;} else if (temp == ';' && isHTML) {isHTML = false;}try {if (!isCode && !isHTML) {n += String.valueOf(temp).getBytes("GBK").length;}} catch (UnsupportedEncodingException e) {e.printStackTrace();}if (n <= length - 3) {result.append(temp);} else {result.append("...");break;}}// 取出截取字符串中的HTML标记String temp_result = result.toString().replaceAll("(>)[^<>]*(<?)", "$1$2");// 去掉不需要结素标记的HTML标记temp_result = temp_result.replaceAll("</?(AREA|BASE|BASEFONT|BODY|BR|COL|COLGROUP|DD|DT|FRAME|HEAD|HR|HTML|IMG|INPUT|ISINDEX|LI|LINK|META|OPTION|P|PARAM|TBODY|TD|TFOOT|TH|THEAD|TR|area|base|basefont|body|br|col|colgroup|dd|dt|frame|head|hr|html|img|input|isindex|li|link|meta|option|p|param|tbody|td|tfoot|th|thead|tr)[^<>]*/?>", "");// 去掉成对的HTML标记temp_result = temp_result.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)</\\1>", "$2");// 用正则表达式取出标记Pattern p = Pattern.compile("<([a-zA-Z]+)[^<>]*>");Matcher m = p.matcher(temp_result);List<String> endHTML = Lists.newArrayList();while (m.find()) {endHTML.add(m.group(1));}// 补全不成对的HTML标记for (int i = endHTML.size() - 1; i >= 0; i--) {result.append("</");result.append(endHTML.get(i));result.append(">");}return result.toString();}/*** 转换为Double类型*/public static Double toDouble(Object val) {if (val == null) {return 0D;}try {return Double.valueOf(trim(val.toString()));} catch (Exception e) {return 0D;}}/*** 转换为Float类型*/public static Float toFloat(Object val) {return toDouble(val).floatValue();}/*** 转换为Long类型*/public static Long toLong(Object val) {return toDouble(val).longValue();}/*** 转换为Integer类型*/public static Integer toInteger(Object val) {return toLong(val).intValue();}/*** 获得i18n字符串*/public static String getMessage(String code, Object[] args) {LocaleResolver localLocaleResolver = (LocaleResolver) SpringContextHolder.getBean(LocaleResolver.class);HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();Locale localLocale = localLocaleResolver.resolveLocale(request);return SpringContextHolder.getApplicationContext().getMessage(code, args, localLocale);}/*** 获得用户远程地址*/public static String getRemoteAddr(HttpServletRequest request) {String remoteAddr = request.getHeader("X-Real-IP");if (isNotBlank(remoteAddr)) {remoteAddr = request.getHeader("X-Forwarded-For");} else if (isNotBlank(remoteAddr)) {remoteAddr = request.getHeader("Proxy-Client-IP");} else if (isNotBlank(remoteAddr)) {remoteAddr = request.getHeader("WL-Proxy-Client-IP");}return remoteAddr != null ? remoteAddr : request.getRemoteAddr();}/*** 驼峰命名法工具** @return toCamelCase("hello_world") == "helloWorld"* toCapitalizeCamelCase("hello_world") == "HelloWorld"* toUnderScoreCase("helloWorld") = "hello_world"*/public static String toCamelCase(String s) {if (s == null) {return null;}s = s.toLowerCase();StringBuilder sb = new StringBuilder(s.length());boolean upperCase = false;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c == SEPARATOR) {upperCase = true;} else if (upperCase) {sb.append(Character.toUpperCase(c));upperCase = false;} else {sb.append(c);}}return sb.toString();}/*** 驼峰命名法工具** @return toCamelCase("hello_world") == "helloWorld"* toCapitalizeCamelCase("hello_world") == "HelloWorld"* toUnderScoreCase("helloWorld") = "hello_world"*/public static String toCapitalizeCamelCase(String s) {if (s == null) {return null;}s = toCamelCase(s);return s.substring(0, 1).toUpperCase() + s.substring(1);}/*** 驼峰命名法工具** @return toCamelCase("hello_world") == "helloWorld"* toCapitalizeCamelCase("hello_world") == "HelloWorld"* toUnderScoreCase("helloWorld") = "hello_world"*/public static String toUnderScoreCase(String s) {if (s == null) {return null;}StringBuilder sb = new StringBuilder();boolean upperCase = false;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);boolean nextUpperCase = true;if (i < (s.length() - 1)) {nextUpperCase = Character.isUpperCase(s.charAt(i + 1));}if ((i > 0) && Character.isUpperCase(c)) {if (!upperCase || !nextUpperCase) {sb.append(SEPARATOR);}upperCase = true;} else {upperCase = false;}sb.append(Character.toLowerCase(c));}return sb.toString();}/*** 如果不为空,则设置值** @param target* @param source*/public static void setValueIfNotBlank(String target, String source) {if (isNotBlank(source)) {target = source;}}/*** 转换为JS获取对象值,生成三目运算返回结果** @param objectString 对象串*                     例如:row.user.id*                     返回:!row?'':!row.user?'':!row.user.id?'':row.user.id*/public static String jsGetVal(String objectString) {StringBuilder result = new StringBuilder();StringBuilder val = new StringBuilder();String[] vals = split(objectString, ".");for (int i = 0; i < vals.length; i++) {val.append("." + vals[i]);result.append("!" + (val.substring(1)) + "?'':");}result.append(val.substring(1));return result.toString();}/*** 通过正则表达式获取内容** @param regex 正则表达式* @param from  原字符串* @return*/public static String[] regex(String regex, String from) {Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(from);List<String> results = new ArrayList<String>();while (matcher.find()) {for (int i = 0; i < matcher.groupCount(); i++) {results.add(matcher.group(i + 1));}}return results.toArray(new String[]{});}}

Java中字符串工具类继承org.apache.commons.lang3.StringUtils类代码相关推荐

  1. Apache commons lang3 StringUtils工具类

    Apache commons lang3 StringUtils工具类 Apache commons lang3包下的StringUtils工具类中封装了一些字符串操作的方法,非常实用,使用起来也非常 ...

  2. 工具类org.apache.commons.lang3.StringUtils

    sEmpty 和 isBlank 的区别你知道吗?也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNoneEmpty/is ...

  3. java的StringUtils.isBlank和StringUtils.isEmpty方法区别(org.apache.commons.lang3.StringUtils)

    前言 估计很多朋友跟我一样,平时也不会特别去注意究竟用isBlank还是isEmpty去判断空字符串,但是大部分场景优先使用isBlank就对了. isEmpty是否为空,只有当==null或者==& ...

  4. Java的org.apache.commons.lang3.StringUtils

    Java的org.apache.commons.lang3.StringUtils 1.用途 StringUtils提供了对String 类型的常用操作方法(如判空等).StringUtils中的方法 ...

  5. Java基础学习总结(125)——org.apache.commons.lang3.StringUtils类方法详解

    org.apache.commons.lang3.StringUtils中方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的 ...

  6. hive执行drop卡死一例:java.lang.NoSuchMethodError: org.apache.commons.lang3.StringUtils.isAnyBlank

    环境: 组件 版本 Hadoop 3.1.2 Hive 2.3.4 故障复现操作: hive中尝试drop table卡死,然后去hadoop的yarn界面发现如下报错 完整报错: org.apach ...

  7. 错误: java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils

    做项目的时候,实现图片异步上传并返回json数据,但是图片上传成功,json数据没有返回,报错:  java.lang.ClassNotFoundException: org.apache.commo ...

  8. org.apache.commons.lang3.StringUtils 的相关用法

    一.jar包下载 commons-lang3-3.1.jar java 开发工具commons-lang3-3.0 jar包,有org.apache.commons.lang3.StringUtils ...

  9. org.apache.commons.lang3.StringUtils.isNotBlank和isEmpty方法

    今天做项目的时候遇到一个小问题,检验字段不为空后,对其切割,用了isEmpty判断,报了空指针异常,最后发现库表里该字段为长度不为0空白字符串,这里isEmpty判断不了,下面列出来 StringUt ...

最新文章

  1. spark学习(二)
  2. MySQL不能查看表_mysql root用户登录后无法查看数据库全部表
  3. hadoop Federation搭建
  4. mysql的sql手工注入基于回显,SQL手工注入漏洞测试(Sql Server数据库)
  5. oracle 论坛 千万级表,Oracle千万级记录操作总结
  6. c语言编写程序,输入10个整数,按从小到大的顺序排序后输出,C语言编程,从键盘输入四个整数,按照数值从小到大顺序输出...
  7. 大数据、人工智能如何融合?来自微软、阿里、滴滴、科大讯飞等的 120 多位专家要用 3 天为你解答!
  8. SQL Server学习笔记
  9. json动态生成复杂表头excel_Excel办公用品管理系统,全函数统算,图表动态展示高效轻松...
  10. KDE——年度最佳桌面环境
  11. 哈佛邓云天:Cascaded Text Generation with Markov Transformers
  12. AXD 调试经验,使用及问题
  13. iOS中 断点下载详解
  14. 手绘topo图组件 vue + element-ui + jtopo
  15. 人工智能传奇——关于AI起源与发展的故事
  16. 微信小程序踩坑记——ColorUI组件的使用
  17. java堆空间(内存)
  18. 什么是jQuery,jquery的特点
  19. java 锁 面试题_Java面试题-Java中的锁
  20. 第六讲 Linux字符设备驱动1

热门文章

  1. python类与继承person类_关于python中类的继承及self
  2. license 验证服务器唯一机器码_代码审计工具Fortify 17.10及Mac平台license版本
  3. 可以对窗口函数之后再加条件_SQL 窗口函数——解决实际问题
  4. Qt 中容器类型的控件
  5. 个推透传消息设置通知栏展示 ios_手机通知栏消息太多,这招教你关闭弹出消息,立刻清爽...
  6. python里import time_python模块---time和timedate
  7. 最小的linux内核编译,Linux最小内核移植
  8. python随机生成k个不重复的随机数_python 生成不重复的随机数的代码
  9. win8网速怎么测试软件,Windows8小技巧:查看当前网速
  10. ||x||的错误理解