java操作字符串的工具类StringUtil
生活随笔
收集整理的這篇文章主要介紹了
java操作字符串的工具类StringUtil
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
依賴引入
<dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency>java對字符串操作的工具類
package com.leo.demo.othertest; import java.io.PrintWriter; import java.io.StringWriter; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List;public class StringUtil extends org.apache.commons.lang.StringUtils {public static final String TA_LEFT = "left";public static final String TA_RIGHT = "right";/*** 獲取流水號:4位平臺機構編碼+14位組包時間YYYYMMDDHH24MMSS+6位流水號(定長),序號隨機** @return*/public static String getIndictseq() {StringBuilder indictseq = new StringBuilder("1085");SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String dateString = sdf.format(new Date());indictseq.append(dateString);StringBuilder smsCode = new StringBuilder();for (int i = 0; i < 6; i++) {int x = (int) (Math.random() * 10);smsCode.append(x);}indictseq.append(smsCode);return indictseq.toString();}/*** 字符串按指定長度構造字符串,不足填空格** @param str* @param len* @param align* @return*/public static String toStringAlign(String str, int len, String align) {String AlignText = new String(str);if (AlignText.length() < len) {int Count = len - AlignText.length();while (Count > 0) {if (StringUtil.equalsIgnoreCase(align, StringUtil.TA_LEFT)) AlignText = AlignText + " ";else AlignText = " " + AlignText;Count--;}}return AlignText;}/*** 整數按指定長度構造字符串,不足填空格** @param iVal* @param len* @param align left,right* @return String*/public static String toStringAlign(int iVal, int len, String align) {return StringUtil.toStringAlign(String.valueOf(iVal), len, align);}/*** 長整數按指定長度構造字符串,不足填空格** @param lVal* @param len* @param align* @return*/public static String toStringAlign(long lVal, int len, String align) {return StringUtil.toStringAlign(String.valueOf(lVal), len, align);}/*** 從字符串中刪除掉指定字符** @param str* @param ch* @return*/public static String remove(String str, char ch) {String temp = "";int Index = 0;while (Index < str.length()) {if (str.charAt(Index) != ch)temp = temp + String.valueOf(str.charAt(Index));Index++;}return temp;}/*** 從字符串中刪除掉指定字符串** @param str* @param RevStr* @return*/public static String remove(String str, String RevStr) {return StringUtil.replace(str, RevStr, "");}/*** 整數按指定長度構造字符串,以字符填空格** @param str* @param len* @param align* @param full* @return*/public static String fullStringAlgin(String str, int len, String align, char full) {String temp = str;if (temp.length() < len) {int nCount = len - temp.getBytes().length;String fullstr = String.valueOf(full);while (nCount > 0) {if (StringUtil.equalsIgnoreCase(align, StringUtil.TA_LEFT)) temp = temp + fullstr;else temp = fullstr + temp;nCount--;}}return temp;}/*** 字符串中是否包含指定字符串(忽慮字符大小寫)** @param str1* @param str2* @return*/public static boolean containsIgnoreCase(String str1, String str2[]) {boolean aEnable = false;for (int index = 0; index < str2.length; index++)aEnable |= StringUtil.equalsIgnoreCase(str1, str2[index]) ? true : false;return aEnable;}/*** 字符串中是否包含指定字符串** @param str1* @param str2* @return*/public static boolean contains(String str1, String str2[]) {boolean aEnable = false;for (int index = 0; index < str2.length; index++)aEnable |= StringUtil.equals(str1, str2[index]) ? true : false;return aEnable;}/*** 判斷字符串在尾部是否以指定字符串** @param str1* @param str2* @return*/public static boolean endsWith(String str1, String str2) {if (str1 == null || str2 == null) return false;if (str1.length() < str2.length()) return false;for (int index = 0; index < str2.length(); index++) {if (str1.charAt(str1.length() - index - 1) != str2.charAt(str2.length() - 1 - index)) return false;}return true;}/*** 判斷字符串在尾部是否以指定字符串(忽慮字符大小寫)** @param str1* @param str2* @return*/public static boolean endsIgnoreCaseWith(String str1, String str2) {if (str1 == null || str2 == null) return false;if (str1.length() < str2.length()) return false;return StringUtil.endsWith(str1.toUpperCase(), str2.toUpperCase());}/*** 判斷字符串在開頭是否以指定字符串** @param str1* @param str2* @return*/public static boolean startWith(String str1, String str2) {if (str1 == null || str2 == null) return false;if (str1.length() < str2.length()) return false;for (int Index = 0; Index < str2.length(); Index++)if (str1.charAt(Index) != str2.charAt(Index)) return false;return true;}/*** 判斷字符串在開頭是否以指定字符串(忽慮字符大小寫)** @param str1* @param str2* @return*/public static boolean startIgnoreCaseWith(String str1, String str2) {if (str1 == null || str2 == null) return false;if (str1.length() < str2.length()) return false;return StringUtil.startWith(str1.toUpperCase(), str2.toUpperCase());}/*** 判斷字符串中是否包含指定字符串(忽慮字符大小寫)** @param lpBuffer* @param containsbuff* @return*/public static boolean containsIgnoreCase(String lpBuffer, String containsbuff) {boolean RetCode = false;if (containsbuff == null || containsbuff.length() <= 0) return true;if (lpBuffer == null || lpBuffer.length() <= 0 || lpBuffer.length() < containsbuff.length()) return false;int Index = 0;String temp;while (Index < lpBuffer.length()) {temp = StringUtil.mid(lpBuffer, Index, containsbuff.length());if (StringUtil.equalsIgnoreCase(temp, containsbuff) == true) return true;Index++;}return RetCode;}/*** 是否包含指定字符串(忽略空格字符串)** @param inlpBuffer* @param incontainsbuff* @return*/public static boolean containsIgnoreBlank(String inlpBuffer, String incontainsbuff) {String lpBuffer = StringUtil.remove(inlpBuffer, ' ');String containsbuff = StringUtil.remove(incontainsbuff, ' ');return StringUtil.contains(lpBuffer, containsbuff);}/*** 功能描述:金額字符串轉換:單位分轉成單元** @param o 傳入需要轉換的金額字符串* @return 轉換后的金額字符串*/public static String fenToYuan(Object o) {if (o == null)return "0.00";String s = o.toString();int len;StringBuilder sb = new StringBuilder();if (s != null && s.trim().length() > 0 && !"null".equalsIgnoreCase(s)) {s = removeZero(s);if (s != null && s.trim().length() > 0 && !"null".equalsIgnoreCase(s)) {len = s.length();int tmp = s.indexOf("-");if (tmp >= 0) {if (len == 2) {sb.append("-0.0").append(s.substring(1));} else if (len == 3) {sb.append("-0.").append(s.substring(1));} else {sb.append(s.substring(0, len - 2)).append(".").append(s.substring(len - 2));}} else {if (len == 1) {sb.append("0.0").append(s);} else if (len == 2) {sb.append("0.").append(s);} else {sb.append(s.substring(0, len - 2)).append(".").append(s.substring(len - 2));}}} else {sb.append("0.00");}} else {sb.append("0.00");}return sb.toString();}/*** 功能描述:去除字符串首部為"0"字符** @param str 傳入需要轉換的字符串* @return 轉換后的字符串*/public static String removeZero(String str) {char ch;String result = "";if (str != null && str.trim().length() > 0 && !"null".equalsIgnoreCase(str.trim())) {try {for (int i = 0; i < str.length(); i++) {ch = str.charAt(i);if (ch != '0') {result = str.substring(i);break;}}} catch (Exception e) {result = "";}} else {result = "";}return result;}/*** 判斷兩個字符串大小** @param str1* @param str2* @return*/public static int compare(String str1, String str2) {return str1.compareTo(str2);}/*** 判斷兩個字符串大小(忽慮字符大小寫)** @param str1* @param str2* @return*/public static int compareIgnoreCase(String str1, String str2) {return str1.compareToIgnoreCase(str2);}/*** 按指定長度分隔字符串** @param str* @param length* @return*/public static String[] split(String str, int length) {int nCount = str.length() / length + 1;String retn[] = new String[nCount];for (int i = 0; i < nCount; i++) retn[i] = StringUtil.substring(str, length * i, length * (i + 1));return retn;}/*** 根據分隔符提取字符串(不忽律空字符)** @param str* @param splitChar* @return*/public static String[] splitNoIgnoreBlank(String str, String splitChar) {List ElementLst = new ArrayList();int Index1 = -splitChar.length();while (Index1 < str.length()) {int Index = Index1 + splitChar.length();Index1 = StringUtil.indexOf(str, splitChar, Index);if (Index1 < 0) Index1 = str.length();ElementLst.add(StringUtil.substring(str, Index, Index1));}return (String[]) ElementLst.toArray(new String[]{});}/*** 將字符串按照指定類型分割** @param aITaskExpr* @return*/public static String[][] splitExpr(String aITaskExpr) {java.util.List aVector = new java.util.ArrayList();if (StringUtil.isBlank(aITaskExpr) == false && StringUtil.contains(aITaskExpr, "=")) {String aITaskExprL[] = StringUtil.split(aITaskExpr, ";");for (int index = 0; index < aITaskExprL.length; index++) {String temp[] = StringUtil.split(aITaskExprL[index], "=");if (temp != null && temp.length > 0) {aVector.add(new String[]{temp[0], temp.length > 1 ? temp[1] : ""});}}}return (String[][]) aVector.toArray(new String[][]{});}/*** 將字符串按照指定類型分割** @param aRefeValue* @param aITaskExpr* @return*/public static String splitExpr(String aRefeValue, String aITaskExpr) {String aValue = aITaskExpr;String aITaskExprL[][] = StringUtil.splitExpr(aITaskExpr);if (aITaskExprL != null && aITaskExprL.length > 0) {aValue = null;for (int index = 0; index < aITaskExprL.length; index++) {if (StringUtil.equals(aITaskExprL[index][0], aRefeValue)) {aValue = aITaskExprL[index][1];break;}}}return aValue;}/*** 將指定字符串分割后放入map** @param aITaskExpr* @param aITaskExprList*/public static void splitExpr(String aITaskExpr, java.util.Map aITaskExprList) {String aITaskExprL[][] = StringUtil.splitExpr(aITaskExpr);if (aITaskExprL != null && aITaskExprL.length > 0) {for (int index = 0; index < aITaskExprL.length; index++)aITaskExprList.put(aITaskExprL[index][0], aITaskExprL[index][1]);}}/*** 用ch替換字符串中指定位置的字符** @param str* @param pos* @param ch*/public static String replace(String str, int pos, char ch){if (str == null || str.getBytes().length <= pos)throw new ArrayIndexOutOfBoundsException();byte SrcByte[] = str.getBytes();SrcByte[pos] = (byte) ch;return new String(SrcByte);}/*** 加密** @param str* @return*/public static String DoEncrypt(String str) {int i;int tmpch;StringBuilder enStrBuff = new StringBuilder();for (i = 0; i < str.length(); i++) {tmpch = (int) str.charAt(i);tmpch = tmpch ^ 0x01;tmpch = tmpch ^ 0x0a;enStrBuff.append(Integer.toHexString(tmpch));}return enStrBuff.toString().toUpperCase();}/*** 解密** @param str* @return*/public static String DoDecrypt(String str) {int tmpch;String deStr = str.toLowerCase();StringBuilder deStrBuff = new StringBuilder();for (int i = 0; i < deStr.length(); i += 2) {String subStr = deStr.substring(i, i + 2);tmpch = Integer.parseInt(subStr, 16);tmpch = tmpch ^ 0x01;tmpch = tmpch ^ 0x0a;deStrBuff.append((char) tmpch);}return deStrBuff.toString();}/*** 判斷是否相同** @param str1* @param str2* @return 是否相同*/public static final boolean isSame(String str1, String str2) {if (StringUtil.isBlank(str1) && StringUtil.isBlank(str2)) {return true;} else if (!StringUtil.isBlank(str1) && !StringUtil.isBlank(str2) && str1.equals(str2)) {return true;} else {return false;}}/*** 判斷字符串是否為空或空字符** @param str* @return 是否為空*/public static final boolean isNull(String str) {if (str == null || "".equals(str.trim())) {return true;} else {return false;}}/*** 字符串通配符算法* 1,通配符*號,表示可以匹配任意多個字符* 2,通配符問號?表示匹配一個字符* 舉例:字符串test.txt,通配符為t?s*.txt為true** @param pattern* @param str* @return*/public static final boolean wildcardMatch(String str, String pattern) {int patternLength = pattern.length();int strLength = str.length();int strIndex = 0;char ch;for (int patternIndex = 0; patternIndex < patternLength; patternIndex++) {ch = pattern.charAt(patternIndex);if (ch == '*') {while (strIndex < strLength) {if (wildcardMatch(str.substring(strIndex), pattern.substring(patternIndex + 1)))return true;strIndex++;}} else if (ch == '?') {strIndex++;if (strIndex > strLength)return false;} else {if ((strIndex >= strLength || (ch != str.charAt(strIndex))))return false;strIndex++;}}return (strIndex == strLength);}/*** 取最后一個匹配對象** @param aPackage* @return*/public static final String wildcardRight(String aPackage, String aMatch) {String[] aWildCard = StringUtil.split(aPackage, aMatch);return aWildCard[aWildCard.length - 1];}/*** 取第一個匹配對象** @param aPackage* @return*/public static final String wildcardLeft(String aPackage, String aMatch) {StringBuilder aWildCard = new StringBuilder();String[] aWildMatch = StringUtil.split(aPackage, aMatch);for (int index = 0; index < aWildMatch.length - 1; index++) {aWildCard.append(aWildMatch[index]);if (index < aWildMatch.length - 2) aWildCard.append(aMatch);}return aWildCard.toString();}/*** 拼接byte數組** @param aBinary 字符串字節* @return*/public static final StringBuilder concatBinary(byte[][] aBinary) {StringBuilder aStringbin = new StringBuilder();for (int index = 0; index < aBinary.length; index++) {aStringbin.append(new String(aBinary[index])).append(index != aBinary.length - 1 ? "\n" : "");}return aStringbin;}/*** 右切位** @param len* @return*/public static final String trimRight(String str, int len) {if (str == null || str.length() < len || len < 0) return str;return StringUtil.substring(str, str.length() - len);}/*** 左切位* @param str* @param len* @return*/public static final String trimLeft(String str, int len) {if (str == null || str.length() < len || len < 0) return str;return StringUtil.substring(str, 0, len);}/*** 拋出異常** @param t* @param aVM_MAX_BYTE* @return*/public static final String doThrowable(Throwable t, int aVM_MAX_BYTE) {String aThrowable = null;try {Throwable tt = t;if (tt.getCause() != null) tt = tt.getCause();StringWriter aWrite = new StringWriter();PrintWriter out = new PrintWriter(aWrite);tt.printStackTrace(out);out.flush();out.close();aThrowable = aWrite.toString();aWrite.close();if (aThrowable.getBytes().length > aVM_MAX_BYTE) {aThrowable = StringUtil.substring(aThrowable, 0, aVM_MAX_BYTE);}} catch (Exception e) {e.printStackTrace();}return aThrowable;}/*** 將字符串對象轉換成字符串如果是空就用""賦值** @param str* @return*/public static String getEmptyIfNullObj(Object str) {return str == null ? "" : str.toString();}/*** 獲取當前年月一般分表使用。例如:202004* @return*/public static String getCurMonth() {SimpleDateFormat formatter = new SimpleDateFormat("yyyyMM");String month = formatter.format(new Date());return month;}// 2011-07-07public static String getDiffMonth(String inMonth, int i) {int iYear = Integer.parseInt(inMonth.substring(0, 4));int iMonth = Integer.parseInt(inMonth.substring(4, 6));int iMonthTmp = iMonth + i;int m = iMonthTmp % 12; // 月int n = iMonthTmp / 12; // 年if (m <= 0) {n--;m += 12;}String sMonth = m < 10 ? "0" + m : String.valueOf(m);return (iYear + n) + sMonth;}// MD5 加密算法public static String MD5(String inStr) {MessageDigest md5 = null;try {md5 = MessageDigest.getInstance("MD5");} catch (Exception e) {return "";}char[] charArray = inStr.toCharArray();byte[] byteArray = new byte[charArray.length];for (int i = 0; i < charArray.length; i++) {byteArray[i] = (byte) charArray[i];}byte[] md5Bytes = md5.digest(byteArray);StringBuilder hexValue = new StringBuilder();for (int i = 0; i < md5Bytes.length; i++) {int val = ((int) md5Bytes[i]) & 0xff;if (val < 16)hexValue.append("0");hexValue.append(Integer.toHexString(val));}return hexValue.toString();}/*** 得到當前時間的interval后的日期,* 如今天是2013-6-27,interval為-1時,則返回20130626** @param interval* @return*/public static String getDiffDay(int interval) {Calendar c = Calendar.getInstance();c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH, interval);return new SimpleDateFormat("yyyyMMdd").format(c.getTime());}/*** 字符串為空轉成""* @param input* @return*/public static final String getEmptyIfNull(String input) {return input == null ? "" : input;}/*** 將分轉換成元** @param pFenValue* @return*/public static String convertMoneyValue(long pFenValue) {NumberFormat nf = NumberFormat.getInstance();nf.setMaximumFractionDigits(2);nf.setMinimumFractionDigits(2);nf.setGroupingUsed(false);return nf.format(pFenValue / 100.00);}/*** 替換html中的標簽* @param str* @return*/public static String replaceHtml(String str) {String tmpstr = str;tmpstr = replace(tmpstr, "<br>", "\n");tmpstr = replace(tmpstr, "<", "<");tmpstr = replace(tmpstr, ">", ">");tmpstr = replace(tmpstr, "&", "&");tmpstr = replace(tmpstr, "'", "\'");tmpstr = replace(tmpstr, """, "\"");tmpstr = replace(tmpstr, " ", " ");return tmpstr;} }總結
以上是生活随笔為你收集整理的java操作字符串的工具类StringUtil的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件操作工具类FileUtil
- 下一篇: java处理日期的工具类DateUtil