# 字符串相关操作
# 1. 字符串判空
是否为空(null):isNull 方法
详细信息
isNull 方法来自于 JDK 自带的 Objects 工具类。
public static boolean isNull(Object obj)
另外,下面的 isEmpty / hashLength / hashText 的判断规则中都涵盖了 is-null 的判断,无需再多加一个 is-null 的判断。
是否为空(empty):isEmpty / hasLength 方法
详细信息
isEmpty / hasLength 方法都来自 Spring 框架的 StringUtils 工具类。
isEmpty 和 hasLength 方法都能实现 empty 的判断。只要字符串是
非空
和非空串
,哪怕其内容无意义(尽是些空格和 tab ),isEmpty 都会返回 false;hashLength 都会返回 true 。public static boolean isEmpty(Object str) public static boolean hasLength(CharSequence str)
伪代码示例如下:
isEmpty(null) = true isEmpty("") = true isEmpty(" ") = false isEmpty("xxx") = false hasLength(null) = false hasLength("") = false hasLength(" ") = true hasLength("xxx") = true
是否为空(blank):hasText 方法
详细信息
hasText 方法都来自 Spring 框架的 StringUtils 工具类。
hasText 方法的 “预期” 是期望字符串中有实际内容,这种情况下它会返回 true 。
public static boolean hasText(CharSequence str)
伪代码示例如下:
hasText(null) = false hasText("") = false hasText(" ") = false hasText("xxx") = true
判断字符串是否包含空白符:containsWhitespace 方法
详细信息
空白符指的是
空格
和tab
。containsWhitespace 方法都来自 Spring 框架的 StringUtils 工具类。
public static boolean containsWhitespace(String str)
伪代码示例如下:
containsWhitespace(null) = false containsWhitespace("") = false containsWhitespace("xxx") = false containsWhitespace(" ") = true containsWhitespace("xx yy") = true containsWhitespace(" xxx") = true containsWhitespace("xxx ") = true
# 2. 子串的查询、摘出与统计
判断字符串以 xxx 开始/结束:startsWithIgnoreClass / endsIgnoreCase 方法
startsWithIgnoreClass / endsIgnoreCase 方法
startsWithIgnoreCase / endsWithIgnoreCase 方法都来自 Spring 框架的 StringUtils 工具类。
boolean startsWithIgnoreCase(String str, String prefix) boolean endsWithIgnoreCase(String str, String suffix)
顾名思义,它会忽略大小写。
startsWithIgnoreCase(null, "hello") = false startsWithIgnoreCase("", "hello") = false startsWithIgnoreCase(" ", "hello") = false startsWithIgnoreCase("hello.txt", "hello") = true startsWithIgnoreCase("hello.txt", "HELLO") = true startsWithIgnoreCase("HELLO.txt", "hello") = true endsWithIgnoreCase(null, ".txt") = false endsWithIgnoreCase("", ".txt") = false endsWithIgnoreCase(" ", ".txt") = false endsWithIgnoreCase("xxx.txt", ".txt") = true endsWithIgnoreCase("xxx.txt", ".TXT") = true endsWithIgnoreCase("xxx.TXT", ".txt") = true
判断字符串指定位置是否包含 xxx:substringMatch 方法
详细信息
substringMatch 方法都来自 Spring 框架的 StringUtils 工具类。
boolean substringMatch(CharSequence str, int index, CharSequence substring)
index 从 0 开始。
伪代码:
substringMatch("hello world", 6, "world") = true substringMatch("hello world", 5, "world") = false substringMatch("hello world", 7, "world") = false substringMatch("hello world", 7, null) = NPE substringMatch(null, 7, "world") = NPE substringMatch(null, 7, null) = NPE
获取最后一部分:unqualify 方法
详细信息
unqualify 方法都来自 Spring 框架的 StringUtils 工具类。
获取最后一个 “点” 之后的内容。
String unqualify(String qualifiedName) // 同上。可指定分隔符 String unqualify(String qualifiedName, char separator)
伪代码示例如下:
unqualify("this.name.is.qualified") = "qualified" unqualify("this,name,is,qualified", ',') = "qualified"
统计 xxx 在字符串中出现次数:countOccurrencesOf 方法
详细信息
countOccurrencesOf 方法都来自 Spring 框架的 StringUtils 工具类。
int countOccurrencesOf(String str, String sub)
伪代码:
StringUtils.countOccurrencesOf("tom tommy", "om") = 2
# 3. 子串的摘除与替换
去除头部/尾部的空白符:trimTrailingWhitespace / trimLeadingWhitespace 方法
详细信息
trimTrailingWhitespace / trimLeadingWhitespace 方法都来自 Spring 框架的 StringUtils 工具类。
String trimLeadingWhitespace(String str) String trimTrailingWhitespace(String str)
伪代码示例如下:
trimLeadingWhitespace("hello") = "hello" trimLeadingWhitespace(" hello")= "hello" trimLeadingWhitespace(" ") = "" trimLeadingWhitespace("") = "" trimLeadingWhitespace(null) = null trimTrailingWhitespace("hello") = "hello" trimTrailingWhitespace("hello ") = "hello" trimTrailingWhitespace(" ") = "" trimTrailingWhitespace("") = "" trimTrailingWhitespace(null) = null
去除头部和尾部的空白符:trimWhitespace 方法
详细信息
trimWhitespace 方法都来自 Spring 框架的 StringUtils 工具类。
String trimWhitespace(String str)
trimWhitespace(" hello ") = "hello"
去除开头、结尾和中间的空白符:trimAllWhitespace 方法
详细信息
trimAllWhitespace 方法都来自 Spring 框架的 StringUtils 工具类。
String trimAllWhitespace(String str)
trimAllWhitespace(" hello world ") = "helloworld"
去除头部/尾部的 xxx:trimTrailingCharacter 方法
详细信息
trimTrailingCharacter 方法都来自 Spring 框架的 StringUtils 工具类。
String trimLeadingCharacter(String str, char leadingCharacter) String trimTrailingCharacter(String str, char trailingCharacter)
伪代码示例如下:
trimLeadingCharacter("hhello", 'h') = "ello" trimLeadingCharacter("hello", 'h') = "ello" trimLeadingCharacter("world", 'h') = "world" trimLeadingCharacter("", 'h') = "" trimLeadingCharacter(null, 'h') = null
去除指定内容:delete 方法
DETAILS
delete 方法都来自 Spring 框架的 StringUtils 工具类。
String delete(String inString, String pattern)
delete("hello", "el") = "hlo"
去除指定字符:deleteAny 方法
详细信息
deleteAny 方法都来自 Spring 框架的 StringUtils 工具类。
注意,这是删字符,不是删字符串。
String deleteAny(String inString, String charsToDelete)
伪代码示例如下:
deleteAny("hello", "hl") = "eo"
替换指定内容:replace 方法
详细信息
replace 方法都来自 Spring 框架的 StringUtils 工具类。
查找并替换指定子串
String replace(String inString, String oldPattern, String newPattern)
伪代码示例如下:
replace("hello", "el", "EL") = "hELlo"
# 4. 为了 IO
比较两个路径字符串:pathEquals 方法
详细信息
pathEquals 方法都来自 Spring 框架的 StringUtils 工具类。
会自动处理路径字符串中的 “..” 。
boolean pathEquals(String path1, String path2)
大小写敏感。
伪代码示例如下:
pathEquals("c:/xxx/yyy/zzz", "c:/xxx/hello/../yyy/zzz") = true pathEquals("c:/xxx/yyy/zzz", "C:/xxx/hello/../yyy/zzz") = false
获得 “干净” 的路径字符串:cleanPath 方法
详细信息
cleanPath 方法都来自 Spring 框架的 StringUtils 工具类。
会优化掉路径字符串中的 “..” 。
String cleanPath(String path)
伪代码示例如下:
cleanPath("c:/xxx/hello/../yyy/zzz") = "c:/xxx/yyy/zzz"
获得文件名:getFilename 方法
详细信息
getFilename 方法都来自 Spring 框架的 StringUtils 工具类。
获得文件名,即去掉文件的路径。
String getFilename(String path)
文件名中会含有后缀。
伪代码示例如下:
getFilename("c:/xxx/hello/../yyy/zzz/world.txt") = "world.txt"
获得文件后缀:getFilenameExtendsion 方法
详细信息
getFilenameExtension 方法都来自 Spring 框架的 StringUtils 工具类。
String getFilenameExtension(String path)
伪代码示例如下:
getFilenameExtension("c:/xxx/hello/../yyy/zzz/world.txt") = ".txt"
获得无后缀文件路径:stripFilenameExtension 方法
详细信息
stripFilenameExtension 方法都来自 Spring 框架的 StringUtils 工具类。
删除文件路径名中的后缀部分,返回一个无后缀的路径字符串。
String stripFilenameExtension(String path)
如果路径中有 “..” ,它不会被优化掉。
伪代码示例如下:
// = "c:/xxx/hello/../yyy/zzz/world" stripFilenameExtension("c:/xxx/hello/../yyy/zzz/world.txt")
# 5. String 转数组集合
String 转数组,以逗号分隔:commaDelimitedListToStringArray 方法
详细信息
commaDelimitedListToStringArray 方法都来自 Spring 框架的 StringUtils 工具类。
String[] commaDelimitedListToStringArray(String str)
伪代码示例如下:
commaDelimitedListToStringArray("xxx,yyy,zzz") = ["xxx", "yyy", "zzz"] commaDelimitedListToStringArray("xxx, yyy, zzz") = ["xxx", " yyy", " zzz"]
String 转数组,自定义分隔符:split / delimitedListToStringArray / tokenizeToStringArray 方法
详细信息
split / delimitedListToStringArray / tokenizeToStringArray 方法都来自 Spring 框架的 StringUtils 工具类。
以第二个参数 delimiter 进行切割
// 注意,这个方法最多只会把字符串切分成 2 份!即,返回值数组的 length 最大为 2 。 String[] split(String toSplit, String delimiter) String[] delimitedListToStringArray(String str, String delimiter) // 分隔符可以指定多个。 String[] tokenizeToStringArray(String str, String delimiters)
伪代码示例如下:
split("xxx,yyy,zzz", ",") = ["xxx", "yyy,zzz"] split("xxx, yyy, zzz", ",") = ["xxx", " yyy, zzz"] split("xxx, yyy, zzz", ", ") = ["xxx", "yyy, zzz"] delimitedListToStringArray("xxx,yyy,zzz", ",") = ["xxx", "yyy", "zzz"] delimitedListToStringArray("xxx, yyy, zzz", ", ") = ["xxx", "yyy", "zzz"] tokenizeToStringArray("xxx,yyy:zzz", ",:") = ["xxx", "yyy", "zzz"] tokenizeToStringArray("xxx, yyy, zzz", ", ")= ["xxx", "yyy", "zzz"]
String 转 Set,以逗号分隔:commaDelimitedListToSet 方法
详细信息
commaDelimitedListToSet 方法来自 Spring 框架的 StringUtils 工具类。
Set<String> commaDelimitedListToSet(String str)
伪代码示例如下:
commaDelimitedListToSet("xxx,yyy,zzz") = ["xxx", "yyy", "zzz"] commaDelimitedListToSet("xxx, yyy, zzz")= ["xxx", " yyy", " zzz"]
# 6. 数组集合转 String
数组转 String,以逗号分隔:arrayToCommaDelimitedString 方法
详细信息
arrayToCommaDelimitedString 方法来自 Spring 框架的 StringUtils 工具类。
String arrayToCommaDelimitedString(Object[] arr)
如果参数类型是 “非 String[]” 类型,这里会隐式地调用它的各个元素的 toString 方法,后再拼接。
arrayToCommaDelimitedString(["xxx", "yyy", "zzz"])= "xxx,yyy,zzz" arrayToCommaDelimitedString(["xxx", " ", "zzz"]) = "xxx, , zzz" arrayToCommaDelimitedString(["xxx", "", "zzz"]) = "xxx,,zzz" arrayToCommaDelimitedString(["hello", null, "goodbye"]) = "xxx,null,zzz"
数组转 String,自定义分隔符:arrayToDelimitedString 方法
详细信息
arrayToDelimitedString 方法来自 Spring 框架的 StringUtils 工具类。
功能同上。以第二个参数(delim)作为分隔符。
String arrayToDelimitedString(Object[] arr, String delim)
伪代码示例如下:
arrayTo...(["xxx", "yyy", "zzz"], ":")= "xxx:yyy:zzz" arrayTo...(["xxx", " ", "zzz"], ":") = "xxx: : zzz" arrayTo...(["xxx", "", "zzz"], ":") = "xxx::zzz" arrayTo...(["xxx", null, "zzz"], ":") = "xxx:null:zzz"
集合转 String,以逗号分隔:collectionToCommaDelimitedString 方法
详细信息
collectionToCommaDelimitedString 方法都来自 Spring 框架的 StringUtils 工具类。
String collectionToCommaDelimitedString(Collection<?> coll)
伪代码示例如下:
collectionTo...(["xxx", " ", "zzz"]) = "xxx, , zzz" collectionTo...(["xxx", "", "zzz"]) = "xxx,,zzz" collectionTo...(["xxx", null, "zzz"]) = "xxx,null,zzz"
集合转 String,自定义分隔符:collectionToDelimitedString 方法
详细信息
collectionToDelimitedString 方法都来自 Spring 框架的 StringUtils 工具类。
String collectionToDelimitedString(Collection<?> coll, String delim)
伪代码示例如下:
collectionTo...(["xxx", "yyy", "zzz"], ":") = "xxx:yyy:zzz" collectionTo...(["xxx", " ", "zzz"], ":") = "xxx: : zzz" collectionTo...(["xxx", "", "zzz"], ":") = "xxx::zzz" collectionTo...(["xxx", null, "zzz"], ":") = "xxx:null:zzz"
# 7. Collection<String> 转 String[]
toStringArray 方法
toStringArray 方法都来自 Spring 框架的 StringUtils 工具类。
String[] toStringArray(Collection<String> collection)
伪代码示例如下:
toStringArray(["xxx", "yyy", "zzz"]) = ["xxx", "yyy", "zzz"]
# 8. 转其它
字符串转 TimeZone:parseTimeZoneString 方法
详细信息
parseTimeZoneString 方法都来自 Spring 框架的 StringUtils 工具类。
// 通过解析时区字符串生成时区对象。 // 常见 TimeZone 字符串见最后。 TimeZone parseTimeZoneString(String timeZoneString)
字符串数组转 Properties:splitArrayElementsIntoProperties 方法
splitArrayElementsIntoProperties 方法
splitArrayElementsIntoProperties 方法都来自 Spring 框架的 StringUtils 工具类。
将字符串数组中的每一项,按照指定分隔符进行切分,并生成 Properties 对象。
字符串数组中的元素的内容类似于
"key1,value1"
Properties splitArrayElementsIntoProperties(String[] array, String delimiter)
伪代码示例如下:
StringUtils.splitArrayElementsIntoProperties([ "key1,value1", "key2,value2", "key3,value3" ], ",")
# 9. 操作字符串数组
对数组的每一项执行 trim:trimArrayElements 方法
详细信息
trimArrayElements 方法都来自 Spring 框架的 StringUtils 工具类。
String[] trimArrayElements(String[] array)
返回新数组。
trimArrayElements(["xxx ", " yyy", " zzz "]) = ["xxx", "yyy", "zzz"]
字符串数组后追加内容:addStringToArray 方法
详细信息
addStringToArray 方法都来自 Spring 框架的 StringUtils 工具类。
String[] addStringToArray(String[] array, String str)
该方法返回新数组。
伪代码示例如下:
add...(["xxx", "yyy"], "zzz") = ["xxx", "yyy", "zzz"]
字符串数组二合一:concatenateStringArrays / mergeStringArrays 方法
详细信息
concatenateStringArrays / mergeStringArrays 方法都来自 Spring 框架的 StringUtils 工具类。
String[] concatenateStringArrays(String[] array1, String[] array2) // 被废弃,建议通过 LinkedHashSet 手动合并两个字符串。 String[] mergeStringArrays(String[] array1, String[] array2)
返回新数组;
concatenateStringArrays:两个数组中有重复的元素,那么,在合并后的新数组中,它也会重复出现;
mergeStringArrays:不同于 concatenateStringArrays ,它能去重。
伪代码示例如下:
concatenate...(["xxx", "yyy"], ["yyy", "zzz"]) = ["xxx", "yyy", "yyy", "zzz"] merge...(["xxx", "yyy"], ["yyy", "zzz"]) = ["xxx", "yyy", "zzz"]
字符串数组去重:removeDuplicateStrings 方法
详细信息
removeDuplicateStrings 方法都来自 Spring 框架的 StringUtils 工具类。
String[] removeDuplicateStrings(String[] array)
返回新字符串数组。
伪代码示例如下:
remove...(["xxx", "yyy", "yyy", "zzz"]) = ["xxx", "yyy", "zzz"]
字符串数组排序:sortStringArray 方法
详细信息
sortStringArray 方法都来自 Spring 框架的 StringUtils 工具类。
String[] sortStringArray(String[] array)
返回排序后的新数组。
伪代码示例如下:
sort...(["hello", "world", "goodbye"]) = ["goodbye", "hello", "world"]
# a. 附:TimeZone String
TimeZone | 地点 |
---|---|
"Asia/Shanghai" | 中国标准时间 (北京) |
"Asia/Hong_Kong" | 香港时间 (香港) |
"Asia/Taipei" | 台北时间 (台北) |
"Asia/Seoul" | 首尔 |
"Asia/Tokyo" | 日本时间 (东京) |
"America/New_York" | 美国东部时间 (纽约) |
"America/Denver" | 美国山区时间 (丹佛) |
"America/Costa_Rica" | 美国中部时间 (哥斯达黎加) |
"America/Chicago" | 美国中部时间 (芝加哥) |
"America/Mexico_City" | 美国中部时间 (墨西哥城) |
"America/Regina" | 美国中部时间 (里贾纳) |
"America/Los_Angeles" | 美国太平洋时间 (洛杉矶) |
"Pacific/Majuro" | 马朱罗 |
"Pacific/Midway" | 中途岛 |
"Pacific/Honolulu" | 檀香山 |
"America/Anchorage" | 安克雷奇 |
"America/Tijuana" | 美国太平洋时间 (提华纳) |
"America/Phoenix" | 美国山区时间 (凤凰城) |
"America/Chihuahua" | 奇瓦瓦 |
"America/Bogota" | 哥伦比亚时间 (波哥大) |
"America/Caracas" | 委内瑞拉时间 (加拉加斯) |
"America/Barbados" | 大西洋时间 (巴巴多斯) |
"America/Manaus" | 亚马逊标准时间 (马瑙斯) |
"America/St_Johns" | 纽芬兰时间 (圣约翰) |
"America/Santiago" | 圣地亚哥 |
"America/Argentina/Buenos_Aires" | 布宜诺斯艾利斯 |
"America/Godthab" | 戈特霍布 |
"America/Montevideo" | 乌拉圭时间 (蒙得维的亚) |
"America/Sao_Paulo" | 圣保罗 |
"Atlantic/South_Georgia" | 南乔治亚 |
"Atlantic/Azores" | 亚述尔群岛 |
"Atlantic/Cape_Verde" | 佛得角 |
"Africa/Casablanca" | 卡萨布兰卡 |
"Europe/London" | 格林尼治标准时间 (伦敦) |
"Europe/Amsterdam" | 中欧标准时间 (阿姆斯特丹) |
"Europe/Belgrade" | 中欧标准时间 (贝尔格莱德) |
"Europe/Brussels" | 中欧标准时间 (布鲁塞尔) |
"Europe/Sarajevo" | 中欧标准时间 (萨拉热窝) |
"Africa/Brazzaville" | 西部非洲标准时间 (布拉扎维) |
"Africa/Windhoek" | 温得和克 |
"Asia/Amman" | 东欧标准时间 (安曼) |
"Europe/Athens" | 东欧标准时间 (雅典) |
"Asia/Beirut" | 东欧标准时间 (贝鲁特) |
"Africa/Cairo" | 东欧标准时间 (开罗) |
"Europe/Helsinki" | 东欧标准时间 (赫尔辛基) |
"Asia/Jerusalem" | 以色列时间 (耶路撒冷) |
"Africa/Harare" | 中部非洲标准时间 (哈拉雷) |
"Europe/Minsk" | 明斯克 |
"Asia/Baghdad" | 巴格达 |
"Europe/Moscow" | 莫斯科 |
"Asia/Kuwait" | 科威特 |
"Africa/Nairobi" | 东部非洲标准时间 (内罗毕) |
"Asia/Tehran" | 伊朗标准时间 (德黑兰) |
"Asia/Baku" | 巴库 |
"Asia/Tbilisi" | 第比利斯 |
"Asia/Yerevan" | 埃里温 |
"Asia/Dubai" | 迪拜 |
"Asia/Kabul" | 阿富汗时间 (喀布尔) |
"Asia/Karachi" | 卡拉奇 |
"Asia/Oral" | 乌拉尔 |
"Asia/Yekaterinburg" | 叶卡捷林堡 |
"Asia/Calcutta" | 加尔各答 |
"Asia/Colombo" | 科伦坡 |
"Asia/Katmandu" | 尼泊尔时间 (加德满都) |
"Asia/Almaty" | 阿拉木图 |
"Asia/Rangoon" | 缅甸时间 (仰光) |
"Asia/Krasnoyarsk" | 克拉斯诺亚尔斯克 |
"Asia/Bangkok" | 曼谷 |
"Asia/Irkutsk" | 伊尔库茨克时间 (伊尔库茨克) |
"Asia/Kuala_Lumpur" | 吉隆坡 |
"Australia/Perth" | 佩思 |
"Asia/Yakutsk" | 雅库茨克时间 (雅库茨克) |
"Australia/Darwin" | 达尔文 |
"Australia/Brisbane" | 布里斯班 |
"Asia/Vladivostok" | 海参崴时间 (符拉迪沃斯托克) |
"Pacific/Guam" | 关岛 |
"Australia/Adelaide" | 阿德莱德 |
"Australia/Hobart" | 霍巴特 |
"Australia/Sydney" | 悉尼 |
"Asia/Magadan" | 马加丹时间 (马加丹) |
"Pacific/Auckland" | 奥克兰 |
"Pacific/Fiji" | 斐济 |
"Pacific/Tongatapu" | 东加塔布 |
← 断言(Assert) 数组相关操作 →