StringUtils工具類常用方法匯總2(截取干跛、去除空白子姜、包含、查詢索引)

一楼入、截取
??StringUtils中常用的截取字符串的方法如下:

substring(String str,int start)
substring(String str,int start, int end)
substringAfter(String str,String separator)
substringAfterLast(String str,String separator)
substringBefore(String str,String separator)
substringBeforeLast(String str,String separator)
substringBetween(String str,String tag)
??需要注意的是哥捕,截取字符串時,若被截取的字符串為null或""嘉熊,則截取之后的返回的字符串也為null和""遥赚。

(1)根據(jù)指定位置截取字符串,當指定的截取位置為非負數(shù)時阐肤,則從左往右開始截取凫佛,第一位為0,后面依次類推孕惜,但當索引值為負數(shù)時愧薛,則從右往左截取,注意此時右側第一位為-1:

a)只指定了起始位置衫画,則截取至字符串末尾:

StringUtils.substring(null, 2); // "" null和""截取后都返回null和""
StringUtils.substring(null, 2); // null
StringUtils.substring("china", 0); // china 指定的起始截取位置為0毫炉,則從第一位開始截取,也就是不截取
StringUtils.substring("china", 2); // ina 指定的截取位置為2碧磅,則從左往右第三位開始截取
StringUtils.substring("china", -2); // na 指定的截取位置為-2碘箍,則從右往左第二位開始截取
????b)指定了起始位置和結束位置,則從起始位置開始截取到結束位置(但不包含結束位置):

StringUtils.substring(null, 2, 4); // null null和""截取后都返回null和""
StringUtils.substring("", 2, 4); // ""
StringUtils.substring("china", 0, 0); // ""
StringUtils.substring("china", 2, 4); // in
StringUtils.substring("china", -2, -4); // in
StringUtils.substring("china", 2, -3); // ""
StringUtils.substring("china", 2, -1); // in
????(2)根據(jù)指定的分隔符進行截染ń肌(不包含該分隔符):
??????a)從分隔符第一次出現(xiàn)的位置向后截确崃瘛:

StringUtils.substringAfter("china", "i"); // na 從第一次出現(xiàn)"i"的位置向后截取,不包含第一次出現(xiàn)的"i"
StringUtils.substringAfter("china", "hi"); // na
StringUtils.substringAfter("chinachina","h")); // inachina
StringUtils.substringAfter("china", "a"); // ""
StringUtils.substringAfter("china", "d"); // "" 分隔符在要截取的字符串中不存在秆撮,則返回""
StringUtils.substringAfter("china", "")); // china 分隔符為""四濒,則返回原字符串
Stringtils.substringAfter("china", null); // "" 分隔符為null,則返回""
??????b)從分隔符最后一次出現(xiàn)的位置向后截戎氨妗:

StringUtils.substringAfterLast("china", "i"); // na
StringUtils.substringAfterLast("chinachina", "i"); // na "i"最后出現(xiàn)的位置向后截取
??????c)從分隔符第一次出現(xiàn)的位置向前截鹊馏 :

StringUtils.substringBefore("china", "i"); // ch
StringUtils.substringBefore("chinachina", "i"); // ch 從"i"第一次出現(xiàn)的位置向前截取
??????d)從分隔符最后一次出現(xiàn)的位置向前截取:

StringUtils.substringBeforeLast("china", "i");
StringUtils.substringBeforeLast("chinachina", "i"); // chinach
??????e)截取指定標記字符串之間的字符序列:

StringUtils.substringBetween(null, "ch") // null
StringUtils.substringBetween("", "") // ""
StringUtils.substringBetween("tagabctag", "") // "" 標記字符串為""舒裤,則截取后返回""
StringUtils.substringBetween("", "tag") // null // 注意此處返回的是null
StringUtils.substringBetween("tagabctag", null) // null 標記字符串為null喳资,則截取后返回null
StringUtils.substringBetween("tagabctag", "tag") // "abc"
二、去除空白:
??去除字符串中的空白符是我們在處理字符串時經(jīng)常遇到的問題腾供,StringUtils中也封裝了一些非常好用的方法來幫助我們解決這個問題:

trim(String str)
trimToEmpty(String str)
trimToNull(String str)
strip(String str)
stripToEmpty(String str)
stripToNull(String str)
deleteWhitespace(String str)
??(1)去除字符串首尾的控制符(char ≤ 32)
????a)trim(String str):如果被去除的字符串的為null或""仆邓,則返回null和"":

StringUtils.trim(null); // null
StringUtils.trim(""); // ""
StringUtils.trim(" ");// ""
StringUtils.trim("abc"); // abc
StringUtils.trim(" abc "); // abc
StringUtils.trim(" a b c "); // "a b c" 注意此處字符串內(nèi)部的控制符是不去除的
????b)trimToEmpty(String str):如果被去除的字符串的為null或""鲜滩,則都返回"":

StringUtils.trimToEmpty(null); // "" 此處返回的是""
StringUtils.trimToEmpty(""); // ""
StringUtils.trimToEmpty(" ");// ""
StringUtils.trimToEmpty("abc"); // abc
StringUtils.trimToEmpty(" abc "); // abc
StringUtils.trimToEmpty(" a b c "); // a b c
????c)trimToNull(String str):如果被去除的字符串的為null或"",則都返回null:

StringUtils.trimToNull(null); // null
StringUtils.trimToNull(""); // null
StringUtils.trimToNull(" ");// null
StringUtils.trimToNull("abc"); // abc
StringUtils.trimToNull(" \t\r\nabc "); // abc
StringUtils.trimToNull(" a b c "); // "a b c"
??(2)去除字符串首尾的空白符(空白符主要包括' '节值,'\t'徙硅,'\r','\n'等等搞疗,具體的空白符可以參考Java API中Character類中isWhiteSpace()方法中的描述):
????a)trim(String str):如果被去除的字符串的為null或""嗓蘑,則返回null和"":

StringUtils.strip(null); // null
StringUtils.strip(""); // ""
StringUtils.strip(" ");// ""
StringUtils.strip("abc"); // abc
StringUtils.strip(" \t\r\n abc "); // abc
StringUtils.strip(" a b c "); // a b c
????b)trimToEmpty(String str):如果被去除的字符串的為null或"",則都返回"":

StringUtils.stripToEmpty(null); // null
StringUtils.stripToEmpty(""); // nulld
StringUtils.stripToEmpty(" ");// null
StringUtils.stripToEmpty("abc"); // abc
StringUtils.stripToEmpty(" \t\r\n abc "); // abc
StringUtils.stripToEmpty(" a b c "); // "a b c"
????c)trimToNull(String str):如果被去除的字符串的為null或""匿乃,則都返回null:

StringUtils.stripToNull(null); // null
StringUtils.stripToNull(""); // nulld
StringUtils.stripToNull(" ");// null
StringUtils.stripToNull("abc"); // abc
StringUtils.stripToNull(" \t\r\n abc "); // abc
StringUtils.stripToNull(" a b c "); // "a b c"
??(2)去除字符串中所有的空白符:

StringUtils.deleteWhitespace(null); // null
StringUtils.deleteWhitespace(""); // ""
StringUtils.deleteWhitespace("abc"); // "abc"
StringUtils.deleteWhitespace(" ab c "); // "abc"
三桩皿、包含:
??StringUtils中判斷是否包含的方法主要有:

contains(CharSequence seq, int searchChar)
contains(CharSequence seq, CharSequence searchSeq)
containsIgnoreCase(CharSequence str, CharSequence searchStr)
containsAny(CharSequence cs, char... searchChars)
containsAny(CharSequence cs, CharSequence searchChars)
containsOnly(CharSequence cs,char… valid)
containsOnly(CharSequence cs, String validChars)
containsNone(CharSequence cs,char… searchChars)
containsNone(CharSequence cs, String invalidChars)
startsWith(CharSequence str,CharSequence prefix)
startsWithIgnoreCase(CharSequence str,CharSequence prefix)
startsWithAny(CharSequence string,CharSequence… searchStrings)
??(1)判斷字符串中是否包含指定的字符或字符序列:
????a)區(qū)分大小寫:

StringUtils.contains(null, 'a'); // false
StringUtils.contains("china", null); // false
StringUtils.contains("", 'a'); // false
StringUtils.contains("china", 'a');// true
StringUtils.contains("china", 'z');//false
StringUtils.contains(null, "a"); // false
StringUtils.contains("china", null); // false
StringUtils.contains("", ""); // true
StringUtils.contains("abc", "");// true
StringUtils.contains("china", "na");// true
StringUtils.contains("abc", "z"); // false
????b)不區(qū)分大小寫:

StringUtils.containsIgnoreCase("china", 'a');// true
StringUtils.containsIgnoreCase("china", 'A');// true
StringUtils.containsIgnoreCase("china", 'Z');//false
StringUtils.containsIgnoreCase(null, "A"); // false
StringUtils.containsIgnoreCase("china", null); // false
StringUtils.containsIgnoreCase("", ""); // true
StringUtils.containsIgnoreCase("abc", "");// true
StringUtils.containsIgnoreCase("china", "na");// true
StringUtils.containsIgnoreCase("china", "Na");// true
StringUtils.containsIgnoreCase("abc", "Z"); // false
??(2)判斷字符串中是否包含指定字符集合中或指定字符串中任一字符,區(qū)分大小寫:

StringUtils.containsAny(null, 'a', 'b');// false
StringUtils.containsAny("", 'a', 'b');// false
StringUtils.containsAny("abc", 'a', 'z');// true
StringUtils.containsAny("abc", 'x', 'y');// false
StringUtils.containsAny("abc", 'A', 'z');// false
StringUtils.containsAny(null, "a");// false
StringUtils.containsAny("", "a");// false
StringUtils.containsAny("abc", "ab");// true
StringUtils.containsAny("abc", "ax");// true
StringUtils.containsAny("abc", "xy");// false
StringUtils.containsAny("abc", "Ax");// false
??(3)判斷字符串中是否不包含指定的字符或指定的字符串中的字符扳埂,區(qū)分大小寫:

StringUtils.containsNone(null, 'a'); // true
StringUtils.containsNone("", 'a'); // true 注意這里业簿,空串總是返回true
StringUtils.containsNone("china", ' '); // true 注意包含空白符為true
StringUtils.containsNone("china", '\t'); // true
StringUtils.containsNone("china", '\r'); // true
StringUtils.containsNone("china", 'x', 'y', 'z'); // true
StringUtils.containsNone("china", 'c', 'y', 'z'); // false
StringUtils.containsNone("china", 'C', 'y', 'z'); // true
StringUtils.containsNone(null, "a"); // true
StringUtils.containsNone("", "a"); // true
StringUtils.containsNone("china", ""); // true
StringUtils.containsNone("china", "xyz"); // true
StringUtils.containsNone("china", "cyz"); // false
StringUtils.containsNone("china", "Cyz"); // true
??(4)判斷字符串中的字符是否都是出自所指定的字符數(shù)組或字符串,區(qū)分大小寫:

StringUtils.containsOnly(null, 'a');// false
StringUtils.containsOnly("", "a");// true
StringUtils.containsOnly("ab", ' ');// false
StringUtils.containsOnly("abab", 'a', 'b', 'c');// true
StringUtils.containsOnly("abcd", 'a', 'b', 'c');// false
StringUtils.containsOnly("Abab", 'a', 'b', 'c');// false
StringUtils.containsOnly(null, "a");// false
StringUtils.containsOnly("", "a"); // true
StringUtils.containsOnly("abab", "abc));// true
StringUtils.containsOnly("abcd", "abc"); // false
StringUtils.containsOnly("Abab", "abc");// false
??(5)判斷字符串是否以指定的字符序列開頭:
????a)區(qū)分大小寫:

StringUtils.startsWith(null, null); // true
StringUtils.startsWith(null, "abc"); // false
StringUtils.startsWith("abcdef", null); // false
StringUtils.startsWith("abcdef", "abc"); // true
StringUtils.startsWith("ABCDEF", "abc"); // false
????b)不區(qū)分大小寫:

StringUtils.startsWithIgnoreCase(null, null);// true
StringUtils.startsWithIgnoreCase(null, "abc");// false
StringUtils.startsWithIgnoreCase("abcdef", null);// false
StringUtils.startsWithIgnoreCase("abcdef", "abc");// true
StringUtils.startsWithIgnoreCase("ABCDEF", "abc");// true
??(6)判斷字符串是否以指定的字符序列數(shù)組中任意一個開頭阳懂,區(qū)分大小寫:

StringUtils.startsWithAny(null, null);// false
StringUtils.startsWithAny(null, new String[] { "abc" });// false
StringUtils.startsWithAny("abcxyz", null);// false
StringUtils.startsWithAny("abcxyz", new String[] { "" });// true
StringUtils.startsWithAny("abcxyz", new String[] { "abc" });// true
StringUtils.startsWithAny("abcxyz", new String[] { null, "xyz", "abc" });// true
StringUtils.startsWithAny("abcxyz", null, "xyz", "ABCX");// false
StringUtils.startsWithAny("ABCXYZ", null, "xyz", "abc");// false
四梅尤、查詢索引:
??StringUtils中獲取字符或字符序列在字符串中出現(xiàn)的索引下標的方法主要有:

indexOf(CharSequence seq, int searchChar)
indexOf(CharSequence seq,CharSequence searchSeq)
indexOfIgnoreCase
indexOf(CharSequence seq,CharSequence searchSeq,int startPos)
lastIndexOf(CharSequence seq,int searchChar)
lastIndexOfIgnoreCase(CharSequence str,CharSequence searchStr)
??(1)獲取指定字符或字符序列在字符串中第一次出現(xiàn)的索引,若字符串中不包含該字符或字符序列岩调,則返回-1巷燥,若字符串或字符序列為""或null,也返回-1((但字符串和字符序列都為""的情況下号枕,則返回0)):
????a)區(qū)分大小寫:

StringUtils.indexOf(null, 'a');// -1
StringUtils.indexOf("", 'a');// -1
StringUtils.indexOf("abca", 'a');// 0
StringUtils.indexOf("abca", 'b');// 1
StringUtils.indexOf("abca", 'A');// -1
StringUtils.indexOf(null, "a"); // -1
StringUtils.indexOf("abc", null); // -1
StringUtils.indexOf("", ""); // 0
StringUtils.indexOf("", "a"); // -1 注意這里第二個參數(shù)為""時則為0
StringUtils.indexOf("abc", "a"); // 0
StringUtils.indexOf("abc", "b"); // 1
StringUtils.indexOf("abc", "ab"); // 0
StringUtils.indexOf("abc", ""); // 0
????b)不區(qū)分大小寫:

StringUtils.indexOfIgnoreCase(null, "a"); // -1
StringUtils.indexOfIgnoreCase("abc", null); // -1
StringUtils.indexOfIgnoreCase("", ""); // 0
StringUtils.indexOfIgnoreCase("", "a");// -1
StringUtils.indexOfIgnoreCase("abc", "b));// 1
StringUtils.indexOfIgnoreCase("abc", "B"); // 1
??(1)獲取字符序列在字符串中指定位置之后第一次出現(xiàn)的索引缰揪,若字符串中指定位置之后不包含該字符序列,則返回-1葱淳,若字符串或字符序列為""或null钝腺,也返回-1(但字符串和字符序列都為""的情況下,結果就有點怪異赞厕,有時返回0艳狐,有時返回1,有時返回-1皿桑,根據(jù)指定的起始位置會有變化):
????a)區(qū)分大小寫:

StringUtils.indexOf(null, "a", 2); // -1
StringUtils.indexOf("abc", null, 2); // -1
StringUtils.indexOf("", "", 0); // 0 注意此處和下一行都返回0毫目,對比忽略大小寫的情形,就有點不一樣
StringUtils.indexOf("", "", 1); // 0
StringUtils.indexOf("", "", 2); // 0
StringUtils.indexOf("", "a", 0); // -1 不包括第二個參數(shù)為""的情況
StringUtils.indexOf("abac", "a", 1); // 2
StringUtils.indexOf("abcab", "ab", 2); // 3
StringUtils.indexOf("abc", "a", -1); // 0 -1被當作是0
StringUtils.indexOf("abc", "a", 2); // -1
????b)不區(qū)分大小寫:

StringUtils.indexOfIgnoreCase("", "", 0)); // 0
StringUtils.indexOfIgnoreCase("", "", 0)); // 1 與不忽略大小寫的情況不同诲侮,下面也是
StringUtils.indexOfIgnoreCase("", "", 0)); //-1
StringUtils.indexOfIgnoreCase("abac", "A", 1)); // 2
StringUtils.indexOfIgnoreCase("abcab", "AB", 2)); // 3
StringUtils.indexOfIgnoreCase("abc", "B", -1)); // 1 -1被當作是0
??(2)獲取指定字符或字符序列在字符串中最后一次出現(xiàn)的索引镀虐,若字符串中不包含該字符序列,則返回-1沟绪,若字符串或字符序列為""或null刮便,也返回-1(但字符串和字符序列都為""的情況下,返回0):
????a)區(qū)分大小寫:

StringUtils.lastIndexOf(null, 'a'));// -1
StringUtils.lastIndexOf("", 'a'));// -1
StringUtils.lastIndexOf("abccba", 'a'));// 5
StringUtils.lastIndexOf("abccba", 'z'));// -1
StringUtils.lastIndexOf(null, "a"));// -1
StringUtils.lastIndexOf("abc", null));// -1
StringUtils.lastIndexOf("", ""));// 0
StringUtils.lastIndexOf("abc", "b"));// 1
StringUtils.lastIndexOf("abc", "ab"));// 0
StringUtils.lastIndexOf("abc", ""));// 3 返回字符串的長度
????b)不區(qū)分大小寫:

StringUtils.lastIndexOfIgnoreCase(null, "a");// -1
StringUtils.lastIndexOfIgnoreCase("abc", null);// -1
StringUtils.lastIndexOfIgnoreCase("", "");// 0
StringUtils.lastIndexOfIgnoreCase("abc", "B");// 1
StringUtils.lastIndexOfIgnoreCase("abc", "AB");// 0
StringUtils.lastIndexOfIgnoreCase("abc", "");// 3 返回字符串的長度

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绽慈,一起剝皮案震驚了整個濱河市诺核,隨后出現(xiàn)的幾起案子抄肖,更是在濱河造成了極大的恐慌,老刑警劉巖窖杀,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異裙士,居然都是意外死亡入客,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門腿椎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桌硫,“玉大人,你說我怎么就攤上這事啃炸∶” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵南用,是天一觀的道長膀钠。 經(jīng)常有香客問我,道長裹虫,這世上最難降的妖魔是什么肿嘲? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮筑公,結果婚禮上雳窟,老公的妹妹穿的比我還像新娘。我一直安慰自己匣屡,他們只是感情好封救,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捣作,像睡著了一般誉结。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虾宇,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天搓彻,我揣著相機與錄音,去河邊找鬼嘱朽。 笑死旭贬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的搪泳。 我是一名探鬼主播稀轨,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岸军!你這毒婦竟也來了奋刽?” 一聲冷哼從身側響起瓦侮,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎佣谐,沒想到半個月后肚吏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡狭魂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年罚攀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雌澄。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡斋泄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镐牺,到底是詐尸還是另有隱情炫掐,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布睬涧,位于F島的核電站募胃,受9級特大地震影響,放射性物質發(fā)生泄漏宙地。R本人自食惡果不足惜摔认,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宅粥。 院中可真熱鬧参袱,春花似錦、人聲如沸秽梅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽企垦。三九已至环壤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钞诡,已是汗流浹背郑现。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荧降,地道東北人接箫。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像朵诫,于是被迫代替她去往敵國和親辛友。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361