文章目录
Guava库中包含了一系列方便使用的工具库,如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等。
字符串
Guava中提供了丰富的字符串分割、连接、填充方法。
Jointer
用分隔符将多个**字符串(或数组元素)**连接成一个字符串:
- on(String):静态工厂方法,生成一个新的 Joiner 对象,参数为连接符;
- skipNulls():如果元素为空,则跳过;
- useForNull(String):如果元素为空,则用这个字符串代替;
- join(数组/链表):要连接的数组/链表;
- appendTo(String,数组/链表):在第一个参数后面新加上 拼接后的字符串;
- withKeyValueSeparator(String):得到 MapJoiner,Map键、值的连接符;
List<String> lstTest = Arrays.asList("aa", "bb", "cc", null, "dd");
System.out.println(Joiner.on("; ").useForNull("<null>").join(lstTest)); // aa; bb; cc; <null>; dd
Map map = ImmutableMap.of("k1", "v1", "k2", "v2");
System.out.println(Joiner.on("; ").withKeyValueSeparator("=").join(map)); // k1=v1; k2=v2
Splitter
Splitter 将一个字符串按照分隔符生成字符串集合。
String strList = "aa; bb; cc; <null>; dd";
System.out.println(Splitter.on(";").trimResults().split(strList)); // [aa, bb, cc, <null>, dd]
String strMap = "k1=v1; k2=v2";
System.out.println(Splitter.on(";").trimResults().withKeyValueSeparator("=").split(strMap)); // {k1=v1, k2=v2}
拆分器工厂
| 方法 | 描述 | 范例 |
|---|---|---|
Splitter.on(char) |
按单个字符拆分 | Splitter.on(‘;’) |
Splitter.on(CharMatcher) |
按字符匹配器拆分 | Splitter.on(CharMatcher.BREAKING_WHITESPACE) |
Splitter.on(String) |
按字符串拆分 | Splitter.on(“, “) |
Splitter.on(Pattern) Splitter.onPattern(String) |
按正则表达式拆分 | Splitter.onPattern(“\r?\n”) |
Splitter.fixedLength(int) |
按固定长度拆分;最后一段可能比给定长度短,但不会为空。 | Splitter.fixedLength(3) |
Splitter.fixedLength(3).split("1234567");
// [123, 456, 7]
拆分器修饰符
| 方法 | 描述 |
|---|---|
omitEmptyStrings() |
从结果中自动忽略空字符串 |
trimResults() |
移除结果字符串的前导空白和尾部空白 |
trimResults(CharMatcher) |
给定匹配器,移除结果字符串的前导匹配字符和尾部匹配字符 |
limit(int) |
限制拆分出的字符串数量 |
CharMatcher
CharMatcher(只处理char类型代表的字符)提供了一系列方法对字符作特定类型的操作:修剪[trim]、折叠[collapse]、移除[remove]、保留[retain]等等。
工厂方法
| 方法 | 描述 |
|---|---|
anyOf(CharSequence) |
枚举匹配字符。如CharMatcher.anyOf(“aeiou”)匹配小写英语元音 |
is(char) |
匹配指定字符 |
isNot(char) |
不匹配指定字符 |
noneOf(CharSequence) |
等价anyOf(sequence).negate() |
inRange(char, char) |
给定字符范围匹配,如CharMatcher.inRange(‘a’, ‘z’) |
CharMatcher还可通过negate()、and(CharMatcher)和or(CharMatcher)方法组合。
操作方法
CharMatcher提供了多种多样的方法操作CharSequence中的特定字符:
| 方法 | 描述 |
|---|---|
collapseFrom(CharSequence, char) |
把连续的匹配字符替换为特定字符 |
matchesAllOf(CharSequence)matchesAnyOfmatchesNoneOf |
测试字符序列的匹配 |
removeFrom(CharSequence) |
从字符序列中移除所有匹配字符 |
retainFrom(CharSequence) |
在字符序列中保留匹配字符,移除其他字符 |
trimFrom(CharSequence)trimLeadingFromtrimTrailingFrom |
移除字符序列的前导匹配字符、尾部匹配字符 |
replaceFrom(CharSequence, CharSequence) |
用特定字符序列替代匹配字符 |
countIn(CharSequence) |
统计目标字符出现次数 |
indexInlastIndexIn |
查找字符出现位置 |
String strAll = " a b c def ";
CharMatcher spaceMatcher = CharMatcher.whitespace();
System.out.println(strAll);
String result = spaceMatcher.collapseFrom(strAll, ' ');
System.out.println(result);
result = spaceMatcher.removeFrom(strAll);
System.out

Guava库提供了丰富的字符串处理工具,如Joiner和Splitter,便于字符串连接和拆分。此外,它还引入了不可变集合、新型集合(如Multiset、Multimap)和RangeSet等,以及强大的缓存机制。本文详细介绍了Guava中关于字符串、集合和缓存的相关操作。
最低0.47元/天 解锁文章
750

被折叠的 条评论
为什么被折叠?



