Springboot工具類StringUtils使用教程
在實(shí)際的業(yè)務(wù)開發(fā)中,除了經(jīng)常有針對(duì)對(duì)象的判斷或操作以外,經(jīng)常也會(huì)遇到的就是字符串的判斷和操作。比如判斷字符串是否為空、是否以某個(gè)字符結(jié)尾、去除頭部和尾部的空白字符、字符的查找和替換。在Spring的核心包中存在這樣一個(gè)類org.springframework.util.StringUtils,它提供了常見的關(guān)于字符串的判斷和操作的靜態(tài)方法。下面咱們針對(duì)一些常見的一塊學(xué)習(xí)一下,順便再把前面說的斷言給復(fù)習(xí)一下:
org.springframework.util.StringUtils
字符串判斷
判斷字符串是否為 null,或 ""。注意,包含空白符的字符串為非空。
booleanisEmpty(Objectstr)
@Test public void test() { String name = ""; boolean empty = StringUtils.isEmpty(name); Assert.isTrue(empty, "變量name是有值的"); System.out.println("給name賦值為zhangsan"); name = "zhangsan"; boolean empty1 = StringUtils.isEmpty(name); Assert.isTrue(empty1, "變更name是有值的"); }
判斷字符串是否是以指定內(nèi)容結(jié)束。忽略大小寫。
booleanendsWithIgnoreCase(Stringstr,Stringsuffix)
@Test public void test2() { String name = "zhangsanAK"; boolean ak = StringUtils.endsWithIgnoreCase(name, "ak"); Assert.isTrue(ak, "變量name不是以ak結(jié)尾的"); boolean akb = StringUtils.endsWithIgnoreCase(name, "akb"); Assert.isTrue(akb, "變量name不是以akb結(jié)尾的"); }
判斷字符串是否已指定內(nèi)容開頭。忽略大小寫。
booleanstartsWithIgnoreCase(Stringstr,Stringprefix)
@Test public void test3() { String name = "OKzhangsan"; boolean ok = StringUtils.startsWithIgnoreCase(name, "ok"); Assert.isTrue(ok, "變量name不是以ak結(jié)尾的"); boolean abc = StringUtils.startsWithIgnoreCase(name, "abc"); Assert.isTrue(abc, "變量name不是以abc開始的"); }
是否包含空白符。
booleancontainsWhitespace(Stringstr)
@Test public void test4() { String name = "OK zhangsan"; boolean spaceFlag = StringUtils.containsWhitespace(name); Assert.isTrue(spaceFlag, "變量name沒有包含空格"); System.out.println("給name賦值為zhangsan"); name = "zhangsan"; boolean spaceFlag2 = StringUtils.containsWhitespace(name); Assert.isTrue(spaceFlag2, "變量name沒有包含空格"); }
判斷字符串非空且長度不為 0,即,Not Empty。
booleanhasLength(CharSequence str)
@Test public void test5() { String name = "zhangsan"; boolean lengthFlag = StringUtils.hasLength(name); Assert.isTrue(lengthFlag, "變量name非空,但是長度為0"); System.out.println("給name賦值為一個(gè)空字符串"); name = " "; boolean lengthFlag2 = StringUtils.hasLength(name); Assert.isTrue(lengthFlag2, "變量name非空,但是長度為0"); System.out.println("給name賦值為一個(gè)空字符串,但長度為0"); name = ""; boolean lengthFlag3 = StringUtils.hasLength(name); Assert.isTrue(lengthFlag3, "變量name非空,但是長度為0"); }
判斷字符串是否包含實(shí)際內(nèi)容,即非僅包含空白符,也就是 Not Blank。這里要特別注意一下,通常empty是指null、“”,“ ”,多個(gè)空字符就不會(huì)認(rèn)為是Empty了,而是Blank;
booleanhasText(CharSequence str)
@Test public void test6() { String name = "zhangsan"; boolean lengthFlag = StringUtils.hasText(name); Assert.isTrue(lengthFlag, "變量name非空,但是長度為0"); System.out.println("給name賦值為一個(gè)空字符串"); name = " "; boolean lengthFlag2 = StringUtils.hasText(name); Assert.isTrue(lengthFlag2, "變量是一個(gè)空字符"); }
判斷字符串指定索引處是否包含一個(gè)子串。
booleansubstringMatch(CharSequence str, int index, CharSequence substring)
@Test public void test7() { String msg = "I am zhangsan"; boolean lengthFlag = StringUtils.substringMatch(msg, 5, "zhangsan"); Assert.isTrue(lengthFlag, "變量msg的索引位置為5的地方,是zhangsan"); msg = "I am not zhangsan"; boolean lengthFlag2 = StringUtils.substringMatch(msg, 5, "zhangsan"); Assert.isTrue(lengthFlag2, "變量msg的索引位置為5的地方,是zhangsan"); }
計(jì)算一個(gè)字符串中指定子串的出現(xiàn)次數(shù)。
int countOccurrencesOf(Stringstr,Stringsub)
@Test public void test8() { String msg = "aaa"; int count = StringUtils.countOccurrencesOf(msg, "a"); Assert.isTrue(count == 3, "變量msg中沒有包含3個(gè)a"); msg = "bbb"; int count2 = StringUtils.countOccurrencesOf(msg, "b"); Assert.isTrue(count2==4, "變量msg中沒有包含4個(gè)b"); }
字符串操作
查找并替換指定子串。
String replace(String inString, String oldPattern, String newPattern)
@Test public void test10() { String name = "aba"; String name2 = StringUtils.replace(name, "b", "a"); Assert.isTrue(name2.equals("aaa"), "變量name替換b后結(jié)果不是aaa"); }
去除尾部的特定字符。
String trimTrailingCharacter(String str, char trailingCharacter)
@Test public void test11() { String name = "aba"; String a = StringUtils.trimTrailingCharacter(name, 'a'); Assert.isTrue(a.equals("ab"), "去除尾部的a后不是ab"); }
去除頭部的特定字符。
String trimLeadingCharacter(String str, char leadingCharacter)
@Test public void test12() { String name = "aba"; String a = StringUtils.trimLeadingCharacter(name, 'a'); Assert.isTrue(a.equals("ba"), "去除開頭的a后不是ba"); }
去除頭部的空白符。
String trimLeadingWhitespace(String str)
@Test public void test13() { String name = "aba "; String a = StringUtils.trimTrailingWhitespace(name); Assert.isTrue(a.equals("aba"), "去除尾部的空格失敗了"); }
去除頭部的空白符。
String trimTrailingWhitespace(String str)
@Test public void test14() { String name = " aba"; String a = StringUtils.trimLeadingWhitespace(name); Assert.isTrue(a.equals("aba"), "去除開頭的空格失敗了"); }
去除頭部和尾部的空白符。
String trimWhitespace(String str)
@Test public void test15() { String name = " aba "; String a = StringUtils.trimWhitespace(name); Assert.isTrue(a.equals("aba"), "去除開頭和尾部的空格失敗了"); }
刪除開頭、結(jié)尾和中間的空白符。
String trimAllWhitespace(String str)
@Test public void test16() { String name = " a b a "; String a = StringUtils.trimAllWhitespace(name); Assert.isTrue(a.equals("aba"), "去除開頭、中間、尾部的空格失敗了"); }
刪除指定子串。
String delete(String inString, String pattern)
@Test public void test17() { String name = "abcabc"; String a = StringUtils.delete(name,"bc"); Assert.isTrue(a.equals("aa"), "刪除變更name里的字符b失敗了"); }
對(duì)數(shù)組的每一項(xiàng)執(zhí)行 trim() 方法。
String[] trimArrayElements(String[] array)
@Test public void test18() { String[] names = {" zhangsan " ," li si "}; String[] arr = StringUtils.trimArrayElements(names); for (String s : arr) { Assert.isTrue(s.equals("zhangsan")||s.equals("lisi"), "字符"+s+"中沒有包含zhangsan或lisi"); } }
將 URL 字符串進(jìn)行解碼。
String uriDecode(String source, Charset charset)
@Test public void test19() { String result="http://localhost:8080/abc?name=zhangsan"; String url="http%3A%2F%2Flocalhost%3A8080%2Fabc%3Fname%3Dzhangsan"; String tmp = StringUtils.uriDecode(url, Charset.forName("utf-8")); Assert.isTrue(result.equals(tmp), "解碼失敗"); }
到此這篇關(guān)于Springboot工具類StringUtils使用教程的文章就介紹到這了,更多相關(guān)Springboot StringUtils內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Springboot中RedisTemplate設(shè)置String、Hash、List過期時(shí)間
- SpringBoot升級(jí)3.2報(bào)錯(cuò)Invalid value type for attribute ‘factoryBeanObjectType‘: java.lang.String的解決方案
- SpringBoot混合使用StringRedisTemplate和RedisTemplate的坑及解決
- springboot中json對(duì)象中對(duì)Long類型和String類型相互轉(zhuǎn)換
- SpringBoot統(tǒng)一返回處理出現(xiàn)cannot?be?cast?to?java.lang.String異常解決
- 解決springboot responseentity<string>亂碼問題
相關(guān)文章
基于MyBatis的數(shù)據(jù)持久化框架的使用詳解
Mybatis是一個(gè)優(yōu)秀的開源、輕量級(jí)持久層框架,它對(duì)JDBC操作數(shù)據(jù)庫的過程進(jìn)行封裝。本文將為大家講解一下基于MyBatis的數(shù)據(jù)持久化框架的使用,感興趣的可以了解一下2022-08-08Java數(shù)據(jù)結(jié)構(gòu)之復(fù)雜度篇
算法復(fù)雜度分為時(shí)間復(fù)雜度和空間復(fù)雜度。其作用:?時(shí)間復(fù)雜度是度量算法執(zhí)行的時(shí)間長短;而空間復(fù)雜度是度量算法所需存儲(chǔ)空間的大小2022-01-01SpringBoot使用Validation校驗(yàn)參數(shù)的詳細(xì)過程
這篇文章主要介紹了SpringBoot使用Validation校驗(yàn)參數(shù),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09Java中的布隆過濾器原理實(shí)現(xiàn)和應(yīng)用
Java中的布隆過濾器是一種基于哈希函數(shù)的數(shù)據(jù)結(jié)構(gòu),能夠高效地判斷元素是否存在于一個(gè)集合中。它廣泛應(yīng)用于緩存、網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)查詢等領(lǐng)域,在提高程序性能和減少資源消耗方面具有顯著優(yōu)勢2023-04-04JetBrains?發(fā)布下一代?IDE無比輕量幾秒就能啟動(dòng)干活
雖然?JetBrains?公司說?Fleet?的定位和目標(biāo)并不是代替其他?IDE,但個(gè)人覺得,?如果?Fleet?火起來了,其他?IDE?就會(huì)黯然失色,特別是多語言開發(fā)者,誰愿意裝多個(gè)?IDE?呢?到時(shí)候,可能?JetBrains?以后的所有?IDE?要一統(tǒng)江湖了2021-12-12Java文件(io)編程_基于File類的基本用法(必看篇)
下面小編就為大家?guī)硪黄狫ava文件(io)編程_基于File類的基本用法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08關(guān)于BufferedReader的read()和readLine()的區(qū)別
這篇文章主要介紹了關(guān)于BufferedReader的read()和readLine()的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12