StringUtil工具类:
生活随笔
收集整理的這篇文章主要介紹了
StringUtil工具类:
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** 字符串工具類,提供一些字符串相關(guān)的便捷方法*/
public class StringUtil {private StringUtil() {throw new AssertionError();}/*** <pre>* isBlank(null) = true;* isBlank("") = true;* isBlank(" ") = true;* isBlank("a") = false;* isBlank("a ") = false;* isBlank(" a") = false;* isBlank("a b") = false;* </pre>** @param str 字符串* @return 如果字符串為空或者長(zhǎng)度為0,返回true,否則返回false*/public static boolean isBlank(String str) {return (str == null || str.trim().length() == 0);}/*** <pre>* isEmpty(null) = true;* isEmpty("") = true;* isEmpty(" ") = false;* </pre>** @param c 字符序列* @return 如果字符序列為空或者長(zhǎng)度為0,返回true,否則返回false*/public static boolean isEmpty(CharSequence c) {return (c == null || c.length() == 0);}/*** 獲取字符序列的長(zhǎng)度* <pre>* length(null) = 0;* length(\"\") = 0;* length(\"abc\") = 3;* </pre>** @param c 字符序列* @return 如果字符序列為空,返回0,否則返回字符序列的長(zhǎng)度*/public static int length(CharSequence c) {return c == null ? 0 : c.length();}/*** null Object to empty string* 空對(duì)象轉(zhuǎn)化成空字符串* <pre>* nullStrToEmpty(null) = "";* nullStrToEmpty("") = "";* nullStrToEmpty("aa") = "aa";* </pre>** @param object 對(duì)象* @return String*/public static String nullStrToEmpty(Object object) {return object == null ?"" : (object instanceof String ? (String)object : object.toString());}/*** @param str str* @return String*/public static String capitalizeFirstLetter(String str) {if (isEmpty(str)) {return str;}char c = str.charAt(0);return (!Character.isLetter(c) || Character.isUpperCase(c))? str: new StringBuilder(str.length()).append(Character.toUpperCase(c)).append(str.substring(1)).toString();}/*** 用utf-8編碼* @param str 字符串* @return 返回一個(gè)utf8的字符串*/public static String utf8Encode(String str) {if (!isEmpty(str) || str.getBytes().length != str.length()) {try {return URLEncoder.encode(str, "utf-8");} catch (UnsupportedEncodingException e) {throw new RuntimeException("UnsupportedEncodingException occurred. ", e);}}return str;}/*** @param href 字符串* @return 返回一個(gè)html*/public static String getHrefInnerHtml(String href) {if (isEmpty(href)) {return "";}String hrefReg = ".*<[\\s]*a[\\s]*.*>(.+?)<[\\s]*/a[\\s]*>.*";Pattern hrefPattern = Pattern.compile(hrefReg, Pattern.CASE_INSENSITIVE);Matcher hrefMatcher = hrefPattern.matcher(href);if (hrefMatcher.matches()) {return hrefMatcher.group(1);}return href;}/*** @param source 字符串* @return 返回htmL到字符串*/public static String htmlEscapeCharsToString(String source) {return StringUtil.isEmpty(source)? source: source.replaceAll("<", "<").replaceAll(">", ">").replaceAll("&", "&").replaceAll(""", "\""); }/*** @param s 字符串* @return String*/public static String fullWidthToHalfWidth(String s) {if (isEmpty(s)) {return s;}char[] source = s.toCharArray();for (int i = 0; i < source.length; i++) {if (source[i] == 12288) {source[i] = ' ';// } else if (source[i] == 12290) {// source[i] = '.';}else if (source[i] >= 65281 && source[i] <= 65374) {source[i] = (char) (source[i] - 65248);}else {source[i] = source[i];}}return new String(source);}/*** @param s 字符串* @return 返回的數(shù)值*/public static String halfWidthToFullWidth(String s) {if (isEmpty(s)) {return s;}char[] source = s.toCharArray();for (int i = 0; i < source.length; i++) {if (source[i] == ' ') {source[i] = (char) 12288;// } else if (source[i] == '.') {// source[i] = (char)12290;}else if (source[i] >= 33 && source[i] <= 126) {source[i] = (char) (source[i] + 65248);}else {source[i] = source[i];}}return new String(source);}/*** @param str 資源* @return 特殊字符串切換*/public static String replaceBlanktihuan(String str) {String dest = "";if (str != null) {Pattern p = Pattern.compile("\\s*|\t|\r|\n");Matcher m = p.matcher(str);dest = m.replaceAll("");}return dest;}/*** 判斷給定的字符串是否為null或者是空的* @param string 給定的字符串*/public static boolean isEmpty(String string) {return string == null || "".equals(string.trim());}/*** 判斷給定的字符串是否不為null且不為空* @param string 給定的字符串*/public static boolean isNotEmpty(String string) {return !isEmpty(string);}/*** 判斷給定的字符串?dāng)?shù)組中的所有字符串是否都為null或者是空的* @param strings 給定的字符串*/public static boolean isEmpty(String... strings) {boolean result = true;for (String string : strings) {if (isNotEmpty(string)) {result = false;break;}}return result;}/*** 判斷給定的字符串?dāng)?shù)組中是否全部都不為null且不為空** @param strings 給定的字符串?dāng)?shù)組* @return 是否全部都不為null且不為空*/public static boolean isNotEmpty(String... strings) {boolean result = true;for (String string : strings) {if (isEmpty(string)) {result = false;break;}}return result;}/*** 如果字符串是null或者空就返回""*/public static String filterEmpty(String string) {return StringUtil.isNotEmpty(string) ? string : "";}/*** 在給定的字符串中,用新的字符替換所有舊的字符* @param string 給定的字符串* @param oldchar 舊的字符* @param newchar 新的字符* @return 替換后的字符串*/public static String replace(String string, char oldchar, char newchar) {char chars[] = string.toCharArray();for (int w = 0; w < chars.length; w++) {if (chars[w] == oldchar) {chars[w] = newchar;break;}}return new String(chars);}/*** 把給定的字符串用給定的字符分割* @param string 給定的字符串* @param ch 給定的字符* @return 分割后的字符串?dāng)?shù)組*/public static String[] split(String string, char ch) {ArrayList<String> stringList = new ArrayList<String>();char chars[] = string.toCharArray();int nextStart = 0;for (int w = 0; w < chars.length; w++) {if (ch == chars[w]) {stringList.add(new String(chars, nextStart, w - nextStart));nextStart = w + 1;if (nextStart ==chars.length) { //當(dāng)最后一位是分割符的話,就再添加一個(gè)空的字符串到分割數(shù)組中去stringList.add("");}}}if (nextStart <chars.length) { //如果最后一位不是分隔符的話,就將最后一個(gè)分割符到最后一個(gè)字符中間的左右字符串作為一個(gè)字符串添加到分割數(shù)組中去stringList.add(new String(chars, nextStart,chars.length - 1 - nextStart + 1));}return stringList.toArray(new String[stringList.size()]);}/*** 計(jì)算給定的字符串的長(zhǎng)度,計(jì)算規(guī)則是:一個(gè)漢字的長(zhǎng)度為2,一個(gè)字符的長(zhǎng)度為1** @param string 給定的字符串* @return 長(zhǎng)度*/public static int countLength(String string) {int length = 0;char[] chars = string.toCharArray();for (int w = 0; w < string.length(); w++) {char ch = chars[w];if (ch >= '\u0391' && ch <= '\uFFE5') {length++;length++;}else {length++;}}return length;}private static char[] getChars(char[] chars, int startIndex) {int endIndex = startIndex + 1;//如果第一個(gè)是數(shù)字if (Character.isDigit(chars[startIndex])) {//如果下一個(gè)是數(shù)字while (endIndex < chars.length &&Character.isDigit(chars[endIndex])) {endIndex++;}}char[] resultChars = new char[endIndex - startIndex];System.arraycopy(chars, startIndex, resultChars, 0, resultChars.length);return resultChars;}/*** 是否全是數(shù)字*/public static boolean isAllDigital(char[] chars) {boolean result = true;for (int w = 0; w < chars.length; w++) {if (!Character.isDigit(chars[w])) {result = false;break;}}return result;}/*** 刪除給定字符串中所有的舊的字符** @param string 源字符串* @param ch 要?jiǎng)h除的字符* @return 刪除后的字符串*/public static String removeChar(String string, char ch) {StringBuffer sb = new StringBuffer();for (char cha : string.toCharArray()) {if (cha != '-') {sb.append(cha);}}return sb.toString();}/*** 刪除給定字符串中給定位置處的字符** @param string 給定字符串* @param index 給定位置*/public static String removeChar(String string, int index) {String result = null;char[] chars = string.toCharArray();if (index == 0) {result = new String(chars, 1, chars.length - 1);}else if (index == chars.length - 1) {result = new String(chars, 0, chars.length - 1);}else {result = new String(chars, 0, index) +new String(chars, index + 1, chars.length - index);;}return result;}/*** 刪除給定字符串中給定位置處的字符** @param string 給定字符串* @param index 給定位置* @param ch 如果同給定位置處的字符相同,則將給定位置處的字符刪除*/public static String removeChar(String string, int index, char ch) {String result = null;char[] chars = string.toCharArray();if (chars.length > 0 && chars[index] == ch) {if (index == 0) {result = new String(chars, 1, chars.length - 1);}else if (index == chars.length - 1) {result = new String(chars, 0, chars.length - 1);}else {result = new String(chars, 0, index) +new String(chars, index + 1, chars.length - index);;}}else {result = string;}return result;}/*** 對(duì)給定的字符串進(jìn)行空白過濾** @param string 給定的字符串* @return 如果給定的字符串是一個(gè)空白字符串,那么返回null;否則返回本身。*/public static String filterBlank(String string) {if ("".equals(string)) {return null;}else {return string;}}/*** 將給定字符串中給定的區(qū)域的字符轉(zhuǎn)換成小寫** @param str 給定字符串中* @param beginIndex 開始索引(包括)* @param endIndex 結(jié)束索引(不包括)* @return 新的字符串*/public static String toLowerCase(String str, int beginIndex, int endIndex) {return str.replaceFirst(str.substring(beginIndex, endIndex),str.substring(beginIndex, endIndex).toLowerCase(Locale.getDefault()));}/*** 將給定字符串中給定的區(qū)域的字符轉(zhuǎn)換成大寫** @param str 給定字符串中* @param beginIndex 開始索引(包括)* @param endIndex 結(jié)束索引(不包括)* @return 新的字符串*/public static String toUpperCase(String str, int beginIndex, int endIndex) {return str.replaceFirst(str.substring(beginIndex, endIndex),str.substring(beginIndex, endIndex).toUpperCase(Locale.getDefault()));}/*** 將給定字符串的首字母轉(zhuǎn)為小寫** @param str 給定字符串* @return 新的字符串*/public static String firstLetterToLowerCase(String str) {return toLowerCase(str, 0, 1);}/*** 將給定字符串的首字母轉(zhuǎn)為大寫** @param str 給定字符串* @return 新的字符串*/public static String firstLetterToUpperCase(String str) {return toUpperCase(str, 0, 1);}/*** 將給定的字符串MD5加密** @param string 給定的字符串* @return MD5加密后生成的字符串*/public static String MD5(String string) {String result = null;try {char[] charArray = string.toCharArray();byte[] byteArray = new byte[charArray.length];for (int i = 0; i < charArray.length; i++) {byteArray[i] = (byte) charArray[i];}StringBuffer hexValue = new StringBuffer();byte[] md5Bytes = MessageDigest.getInstance("MD5").digest(byteArray);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));}result = hexValue.toString();} catch (Exception e) {e.printStackTrace();}return result;}/*** 判斷給定的字符串是否以一個(gè)特定的字符串開頭,忽略大小寫** @param sourceString 給定的字符串* @param newString 一個(gè)特定的字符串*/public static boolean startsWithIgnoreCase(String sourceString, String newString) {int newLength = newString.length();int sourceLength = sourceString.length();if (newLength == sourceLength) {return newString.equalsIgnoreCase(sourceString);}else if (newLength < sourceLength) {char[] newChars = new char[newLength];sourceString.getChars(0, newLength, newChars, 0);return newString.equalsIgnoreCase(String.valueOf(newChars));}else {return false;}}/*** 判斷給定的字符串是否以一個(gè)特定的字符串結(jié)尾,忽略大小寫** @param sourceString 給定的字符串* @param newString 一個(gè)特定的字符串*/public static boolean endsWithIgnoreCase(String sourceString, String newString) {int newLength = newString.length();int sourceLength = sourceString.length();if (newLength == sourceLength) {return newString.equalsIgnoreCase(sourceString);}else if (newLength < sourceLength) {char[] newChars = new char[newLength];sourceString.getChars(sourceLength - newLength, sourceLength,newChars, 0);return newString.equalsIgnoreCase(String.valueOf(newChars));}else {return false;}}/*** 檢查字符串長(zhǎng)度,如果字符串的長(zhǎng)度超過maxLength,就截取前maxLength個(gè)字符串并在末尾拼上appendString*/public static String checkLength(String string, int maxLength, String appendString) {if (string.length() > maxLength) {string = string.substring(0, maxLength);if (appendString != null) {string += appendString;}}return string;}/*** 檢查字符串長(zhǎng)度,如果字符串的長(zhǎng)度超過maxLength,就截取前maxLength個(gè)字符串并在末尾拼上…*/public static String checkLength(String string, int maxLength) {return checkLength(string, maxLength, "…");}
}
?
總結(jié)
以上是生活随笔為你收集整理的StringUtil工具类:的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL--字符集
- 下一篇: m文件中函数的执行顺序