Guava 提供了强大的字符串处理工具类,主要包括Joiner、Splitter、CharMatcher、CaseFormat和Strings等,大大简化字符串操作,提高代码的可读性和效率。
Joiner
将多个字符串或集合元素连接成一个字符串,支持自定义分隔符,并可处理null值。
常用方法:
o on(String delimiter):设置分隔符。
o skipNulls():跳过null值。
o useForNull(String replacement):用指定字符串替换null值。
o withKeyValueSeparator(String separator):用于拼接Map的键值对。
示例:
List<String> list = Arrays.asList("a", null, "b", "c");
String result = Joiner.on(", ").skipNulls().join(list); // 输出: a, b, c
System.out.println(result);
Map<String, String> map = ImmutableMap.of("a", "1", "b", "2");
String mapResult = Joiner.on(";").withKeyValueSeparator("=").join(map); // 输出: a=1;b=2
System.out.println(mapResult);
Splitter
将字符串按指定分隔符拆分成多个部分,支持过滤空字符串、修剪空白字符等。
常用方法:
o on(String delimiter):设置分隔符。
o omitEmptyStrings():忽略空字符串。
o trimResults():移除结果字符串的前导和尾部空白字符。
o limit(int maxSplits):限制拆分出的字符串数量。
o withKeyValueSeparator(String separator):将字符串拆分为Map。
示例:
String str = " a, , b , c ";
Iterable<String> parts = Splitter.on(",")
.trimResults()
.omitEmptyStrings()
.split(str); // 输出: a, b, c
System.out.println(parts);
String kvStr = "a=1;b=2";
Map<String, String> kvMap = Splitter.on(";")
.withKeyValueSeparator("=")
.split(kvStr); // 输出: {a=1, b=2}
System.out.println(kvMap);
CharMatcher
字符匹配,支持修剪、折叠、移除、保留等操作。
常用方法:
o is(char c):匹配指定字符。
o inRange(char start, char end):匹配指定范围内的字符。
o whitespace():匹配空白字符。
o digit():匹配数字字符。
o trimFrom(String str):从字符串两端移除匹配的字符。
o removeFrom(String str):移除字符串中所有匹配的字符。
示例:
String trimmed = CharMatcher.whitespace().trimFrom(" abc "); // 输出: abc
System.out.println(trimmed);
CaseFormat
在不同命名风格(如驼峰命名、下划线命名等)之间转换。
常用方法:
o to(CaseFormat format, String str):将字符串转换为指定格式。
示例:
String lowerCamel = "lowerCamel";
String upperUnderscore = CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, lowerCamel); // 输出: LOWER_CAMEL
System.out.println(upperUnderscore);
Strings
提供了一些常见的字符串操作方法,如判空、填充、重复等。
常用方法:
o isNullOrEmpty(String str):判断字符串是否为null或空。
o nullToEmpty(String str):将null转换为空字符串。
o padStart(String str, int minLength, char padChar):在字符串开头填充字符。
o repeat(String str, int count):重复字符串。
示例:
boolean isEmpty = Strings.isNullOrEmpty(""); // 输出: true
String padded = Strings.padStart("99", 5, '0'); // 输出: 00099
String repeated = Strings.repeat("ab", 3); // 输出: ababab
System.out.println(isEmpty);
System.out.println(padded);
System.out.println(repeated);
小结
Guava 的字符串处理工具类提供了比 Java 标准库更丰富和灵活的 API,能够显著简化字符串操作。应用场景如下:
o Joiner:适合拼接字符串或集合,尤其是需要处理null值或拼接Map的场景。
o Splitter:适合拆分字符串,尤其是需要过滤空字符串或处理键值对的场景。
o CharMatcher:适合字符级别的操作,如移除数字、修剪空白字符等。
o CaseFormat:适合命名风格的转换,如将驼峰命名转换为下划线命名。
o Strings:适合常见的字符串操作,如判空、填充、重复等。