StringUtils方法概覽
- IsEmpty/IsBlank - checks if a String contains text
- IsEmpty/IsBlank – 檢查字符串是否有內容。
- Trim/Strip - removes leading and trailing whitespace
- Trim/Strip – 刪除字符串開始和結尾的空白符。
- Equals - compares two strings null-safe
- Equals – 比較兩個字符串null安全。
- IndexOf/LastIndexOf/Contains - null-safe index-of checks
- IndexOf/LastIndexOf/Contains – null安全的索引檢查。
- IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut - index-of any of a set of Strings
- IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut – 字符串集合索引檢查。
- ContainsOnly/ContainsNone - does String contains only/none of these characters
- ContainsOnly/ContainsNone – 字符在字符串中出現一次或一次也沒有出現。
- Substring/Left/Right/Mid - null-safe substring extractions
- Substring/Left/Right/Mid – null安全子串的提取。
- SubstringBefore/SubstringAfter/SubstringBetween - substring extraction relative to other strings
- SubstringBefore/SubstringAfter/SubstringBetween – 子串提取依賴其它字符串。
- Split/Join - splits a String into an array of substrings and vice versa
- Split/Join – 字符串拆分為子串的字符串數組,反之亦然。
- Remove/Delete - removes part of a String
- Remove/Delete – 刪除部分字符串。
- Replace/Overlay - Searches a String and replaces one String with another
- Replace/Overlay – 替換字符串的部分字符。
- Chomp/Chop - removes the last part of a String
- Chomp/Chop – 刪除字符串最后的字符。
- LeftPad/RightPad/Center/Repeat - pads a String
- LeftPad/RightPad/Center/Repeat – 補字符串。
- UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize - changes the case of a String
- UpperCase/LowerCase/SwapCase/Capitalize/Uncapitalize – 改變字符串的大小寫。
- CountMatches - counts the number of occurrences of one String in another
- CountMatches – 計算一個字符或字符串在另外一個字符串出現的次數。
- IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable - checks the characters in a String
- IsAlpha/IsNumeric/IsWhitespace/IsAsciiPrintable – 判斷字符是否在字符串中。
- DefaultString - protects against a null input String
- DefaultString –null安全,null轉換為字符串。
- Reverse/ReverseDelimited - reverses a String
- Reverse/ReverseDelimited – 反轉字符串。
- Abbreviate - abbreviates a string using ellipsis
- Abbreviate – 縮寫字符串用省略符。
- Difference - compares two Strings and reports on their differences
- Difference – 比較兩個字符串並且返回不同。
- LevensteinDistance - the number of changes needed to change one String into another
- LevensteinDistance – 一個字符串改變為另一個字符串需要改變的數量。
判空函數
- StringUtils.isEmpty(String str)
- StringUtils.isNotEmpty(String str)
- StringUtils.isBlank(String str)
- StringUtils.isNotBlank(String str)
- StringUtils.isWhitespace(CharSequence cs)
StringUtils.isWhitespace(null) = false
StringUtils.isWhitespace("") = true
StringUtils.isWhitespace(" ") = true
StringUtils.isWhitespace("abc") = false
StringUtils.isWhitespace("ab2c") = false
StringUtils.isWhitespace("ab-c") = false
- isBlank和isEmpty的區別(isNotBlank = !isBlank Empty同理)
public static boolean isBlank(String str) {
int strLen;
if (str == null || (strLen = str.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if ((Character.isWhitespace(str.charAt(i)) == false)) {
return false;
}
}
return true;
}
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
刪除函數
- StringUtils.remove(String str, char remove)
- StringUtils.remove(String str, String remove)
- StringUtils.removeEnd(String str, String remove)
- StringUtils.removeEndIgnoreCase(String str, String remove)
- StringUtils.removeStart(String str, String remove)
- StringUtils.removeStartIgnoreCase(String str, String remove)
- StringUtils.deleteWhitespace(String str)
//刪除字符
StringUtils.remove("queued", 'u') = "qeed"
//刪除字符串
StringUtils.remove("queued", "ue") = "qd"
//刪除結尾匹配的字符串
StringUtils.removeEnd("www.domain.com", ".com") = "www.domain"
//刪除結尾匹配的字符串,找都不到返回原字符串
StringUtils.removeEnd("www.domain.com", "domain") = "www.domain.com"
//忽略大小寫的
StringUtils.removeEndIgnoreCase("www.domain.com", ".COM") = "www.domain")
//刪除所有空白(好用)
StringUtils.deleteWhitespace("abc") = "abc"
StringUtils.deleteWhitespace(" ab c ") = "abc"
替換函數
- replace(String text, String searchString, String replacement)
- replace(String text, String searchString, String replacement, int max)
- replaceChars(String str, char searchChar, char replaceChar)
- replaceChars(String str, String searchChars, String replaceChars)
- replaceEach(String text, String[] searchList, String[] replacementList)
- replaceEachRepeatedly(String text, String[] searchList, String[] replacementList)
- replaceOnce(String text, String searchString, String replacement)
- overlay(String str,String overlay,int start,int end)
StringUtils.replace("aba", "a", "") = "b"
StringUtils.replace("aba", "a", "z") = "zbz"
//數字就是替換個數,0代表不替換,1代表從開始數起第一個,-1代表全部替換
StringUtils.replace("abaa", "a", "", -1) = "b"
StringUtils.replace("abaa", "a", "z", 0) = "abaa"
StringUtils.replace("abaa", "a", "z", 1) = "zbaa"
StringUtils.replace("abaa", "a", "z", 2) = "zbza"
StringUtils.replace("abaa", "a", "z", -1) = "zbzz"
//replaceEach是replace的增強版,搜索列表和替換長度必須一致,否則報IllegalArgumentException異常
StringUtils.replaceEach("abcde", new String[]{"ab", "d"}, new String[]{"w", "t"}) = "wcte"
StringUtils.replaceEach("abcde", new String[]{"ab", "d"}, new String[]{"d", "t"}) = "dcte"
StringUtils.replaceChars("dabcba", "bcd", "yzx") = "xayzya"
StringUtils.replaceChars("abcba", "bc", "y") = "ayya"
//replaceOnce只替換一次
StringUtils.replaceOnce("aba", "a", "") = "ba"
StringUtils.replaceOnce("aba", "a", "z") = "zba"
StringUtils.replaceEachRepeatedly("abcde", new String[]{"ab", "d"}, new String[]{"w", "t"}) = "wcte"
//這是一個非常奇怪的函數,本來自己料想結果應該是“dcte”的,可是結果居然是tcte,而dcte再替換一次就是tcte了。
StringUtils.replaceEachRepeatedly("abcde", new String[]{"ab", "d"}, new String[]{"d", "t"}) = "tcte"
StringUtils.overlay("abcdef", "zzzz", 2, 4) = "abzzzzef"
StringUtils.overlay("abcdef", "zzzz", 4, 2) = "abzzzzef"
StringUtils.overlay("abcdef", "zzzz", -1, 4) = "zzzzef"
StringUtils.overlay("abcdef", "zzzz", 2, 8) = "abzzzz"
StringUtils.overlay("abcdef", "zzzz", -2, -3) = "zzzzabcdef"
StringUtils.overlay("abcdef", "zzzz", 8, 10) = "abcdefzzzz"
分隔合並函數
- split(String str)
- split(String str, char separatorChar)
- split(String str, String separatorChars)
- split(String str, String separatorChars, int max)
- splitByCharacterType(String str)
- splitByCharacterTypeCamelCase(String str)
- splitByWholeSeparator(String str, String separator)
- splitByWholeSeparator(String str, String separator, int max)
- splitByWholeSeparatorPreserveAllTokens(String str, String separator)
- splitByWholeSeparatorPreserveAllTokens(String str, String separator, int max)
- splitPreserveAllTokens(String str)
- splitPreserveAllTokens(String str, char separatorChar)
- splitPreserveAllTokens(String str, String separatorChars)
- splitPreserveAllTokens(String str, String separatorChars, int max)
//用空白符做空格
StringUtils.split("abc def") = ["abc", "def"]
StringUtils.split("abc def") = ["abc", "def"]
StringUtils.split("a..b.c", '.') = ["a", "b", "c"]
//用字符分割
StringUtils.split("a:b:c", '.') = ["a:b:c"]
//0 或者負數代表沒有限制
StringUtils.split("ab:cd:ef", ":", 0) = ["ab", "cd", "ef"]
//分割字符串 ,可以設定得到數組的長度,限定為2
StringUtils.split("ab:cd:ef", ":", 2) = ["ab", "cd:ef"]
//null也可以作為分隔
StringUtils.splitByWholeSeparator("ab de fg", null) = ["ab", "de", "fg"]
StringUtils.splitByWholeSeparator("ab de fg", null) = ["ab", "de", "fg"]
StringUtils.splitByWholeSeparator("ab:cd:ef", ":") = ["ab", "cd", "ef"]
StringUtils.splitByWholeSeparator("ab-!-cd-!-ef", "-!-") = ["ab", "cd", "ef"]
//帶有限定長度的分隔
StringUtils.splitByWholeSeparator("ab:cd:ef", ":", 2) = ["ab", "cd:ef"]
- join(byte[] array,char separator)
- join(Object[] array,char separator)等方法
- join(Object[] array,char separator,int startIndex,int endIndex)
//只有一個參數的join,簡單合並在一起
StringUtils.join(["a", "b", "c"]) = "abc"
StringUtils.join([null, "", "a"]) = "a"
//null的話,就是把字符合並在一起
StringUtils.join(["a", "b", "c"], null) = "abc"
//從index為0到3合並,注意是排除3的
StringUtils.join([null, "", "a"], ',', 0, 3) = ",,a"
StringUtils.join(["a", "b", "c"], "--", 0, 3) = "a--b--c"
//從index為1到3合並,注意是排除3的
StringUtils.join(["a", "b", "c"], "--", 1, 3) = "b--c"
StringUtils.join(["a", "b", "c"], "--", 2, 3) = "c"
截取函數
- substring(String str,int start)
- substringAfter(String str,String separator)
- substringBeforeLast(String str,String separator)
- substringAfterLast(String str,String separator)
- substringBetween(String str,String tag)
StringUtils.substring("abcdefg", 0) = "abcdefg"
StringUtils.substring("abcdefg", 2) = "cdefg"
StringUtils.substring("abcdefg", 4) = "efg"
//start>0表示從左向右, start<0表示從右向左, start=0則從左第一位開始
StringUtils.substring("abcdefg", -2) = "fg"
StringUtils.substring("abcdefg", -4) = "defg"
//從第二個參數字符串開始截取,排除第二個字符串
StringUtils.substringAfter("abc", "a") = "bc"
StringUtils.substringAfter("abcba", "b") = "cba"
StringUtils.substringAfter("abc", "c") = ""
//從最后一個字母出現開始截取
StringUtils.substringBeforeLast("abcba", "b") = "abc"
StringUtils.substringBeforeLast("abc", "c") = "ab"
StringUtils.substringBeforeLast("a", "a") = ""
StringUtils.substringBeforeLast("a", "z") = "a"
StringUtils.substringAfterLast("abc", "a") = "bc"
StringUtils.substringAfterLast("abcba", "b") = "a"
StringUtils.substringAfterLast("abc", "c") = ""
StringUtils.substringBetween("tagabctag", null) = null
StringUtils.substringBetween("tagabctag", "") = ""
StringUtils.substringBetween("tagabctag", "tag") = "abc"
差異函數
- difference(String str1,String str2)
//在str1中尋找str2中沒有的的字符串,並返回
StringUtils.difference("", "abc") = "abc"
StringUtils.difference("abc", "") = ""
StringUtils.difference("abc", "abc") = ""
StringUtils.difference("abc", "ab") = ""
StringUtils.difference("ab", "abxyz") = "xyz"
StringUtils.difference("abcde", "abxyz") = "xyz"
StringUtils.difference("abcde", "xyz") = "xyz"
刪除空白函數
- trim(String str)
- trimToEmpty(String str)
- trimToNull(String str)
- deleteWhitespace(String str)
StringUtils.trim(null) = null
StringUtils.trim("") = ""
StringUtils.trim(" ") = ""
StringUtils.trim("abc") = "abc"
StringUtils.trim(" abc ") = "abc"
StringUtils.trimToEmpty(null) = ""
StringUtils.trimToEmpty("") = ""
StringUtils.trimToEmpty(" ") = ""
StringUtils.trimToEmpty("abc") = "abc"
StringUtils.trimToEmpty(" abc ") = "abc"
StringUtils.trimToNull(null) = null
StringUtils.trimToNull("") = null
StringUtils.trimToNull(" ") = null
StringUtils.trimToNull("abc") = "abc"
StringUtils.trimToNull(" abc ") = "abc"
判斷是否相等函數
- equals(CharSequence cs1,CharSequence cs2)
- equalsIgnoreCase(CharSequence str1, CharSequence str2)
StringUtils.equals("abc", null) = false
StringUtils.equals("abc", "abc") = true
StringUtils.equals("abc", "ABC") = false
//忽略大小寫
StringUtils.equalsIgnoreCase("abc", null) = false
StringUtils.equalsIgnoreCase("abc", "abc") = true
StringUtils.equalsIgnoreCase("abc", "ABC") = true
是否包含函數
StringUtils.contains(null, *) = false
StringUtils.contains("", *) = false
StringUtils.contains("abc", 'a') = true
StringUtils.contains("abc", 'z') = false
StringUtils.contains(null, *) = false
StringUtils.contains(*, null) = false
StringUtils.contains("", "") = true
StringUtils.contains("abc", "") = true
StringUtils.contains("abc", "a") = true
StringUtils.contains("abc", "z") = false
StringUtils.contains("abc", "A") = true
StringUtils.contains("abc", "Z") = false
StringUtils.containsNone(null, *) = true
StringUtils.containsNone(*, null) = true
StringUtils.containsNone("", *) = true
StringUtils.containsNone("ab", '') = true
StringUtils.containsNone("abab", 'xyz') = true
StringUtils.containsNone("ab1", 'xyz') = true
StringUtils.containsNone("abz", 'xyz') = false
StringUtils.containsAny(null, *) = false
StringUtils.containsAny("", *) = false
StringUtils.containsAny(*, null) = false
StringUtils.containsAny(*, "") = false
StringUtils.containsAny("zzabyycdxx", "za") = true
StringUtils.containsAny("zzabyycdxx", "by") = true
StringUtils.containsAny("aba","z") = false
索引下標函數
//返回第二個參數開始出現的索引值
StringUtils.indexOf("aabaabaa", "a") = 0
StringUtils.indexOf("aabaabaa", "b") = 2
StringUtils.indexOf("aabaabaa", "ab") = 1
//從第三個參數索引開始找起,返回第二個參數開始出現的索引值
StringUtils.indexOf("aabaabaa", "a", 0) = 0
StringUtils.indexOf("aabaabaa", "b", 0) = 2
StringUtils.indexOf("aabaabaa", "ab", 0) = 1
StringUtils.indexOf("aabaabaa", "b", 3) = 5
StringUtils.indexOf("aabaabaa", "b", 9) = -1
//返回第二個參數出現的最后一個索引值
StringUtils.lastIndexOf("aabaabaa", 'a') = 7
StringUtils.lastIndexOf("aabaabaa", 'b') = 5
StringUtils.lastIndexOfIgnoreCase("aabaabaa", "A", 8) = 7
StringUtils.lastIndexOfIgnoreCase("aabaabaa", "B", 8) = 5
StringUtils.lastIndexOfIgnoreCase("aabaabaa", "AB", 8) = 4
StringUtils.lastIndexOfIgnoreCase("aabaabaa", "B", 9) = 5