在實(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í)一下,順便再把前面說(shuō)的斷言給復(fù)習(xí)一下:
(資料圖)
字符串判斷
判斷字符串是否為 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沒有包含空格");
}判斷字符串非空且長(zhǎng)度不為 0,即,Not Empty。
booleanhasLength(CharSequence str)
@Test
public void test5() {
String name = "zhangsan";
boolean lengthFlag = StringUtils.hasLength(name);
Assert.isTrue(lengthFlag, "變量name非空,但是長(zhǎng)度為0");
System.out.println("給name賦值為一個(gè)空字符串");
name = " ";
boolean lengthFlag2 = StringUtils.hasLength(name);
Assert.isTrue(lengthFlag2, "變量name非空,但是長(zhǎng)度為0");
System.out.println("給name賦值為一個(gè)空字符串,但長(zhǎng)度為0");
name = "";
boolean lengthFlag3 = StringUtils.hasLength(name);
Assert.isTrue(lengthFlag3, "變量name非空,但是長(zhǎng)度為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非空,但是長(zhǎng)度為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)文章希望大家以后多多支持腳本之家!
關(guān)鍵詞:
營(yíng)業(yè)執(zhí)照公示信息 聯(lián)系我們:55 16 53 8 @qq.com 關(guān)于我們 財(cái)金網(wǎng) 版權(quán)所有 cfenews.com