Java中字符串工具类继承org.apache.commons.lang3.StringUtils类代码
生活随笔
收集整理的這篇文章主要介紹了
Java中字符串工具类继承org.apache.commons.lang3.StringUtils类代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
轉換為字節數組;是否包含字符串;替換掉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", " ");}/*** 縮略字符串(不區分中英文字符)** @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特殊字符,如 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类代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux上操作Docker守护态运行
- 下一篇: VS2017中运行第一个C#控制台应用并