📅  最后修改于: 2023-12-03 15:14:08.084000             🧑  作者: Mango
CharMatcher 是 Guava 中用来进行字符匹配和替换的工具类。它提供了丰富的方法来处理字符串中的字符,包括删除、保留、替换和修剪等操作。
CharMatcher 类包括如下常用方法:
is(char c)
:判断字符 c 是否匹配当前 CharMatcher。anyOf(CharSequence sequence)
:返回一个 CharMatcher,匹配所给出序列中的任意一个字符。noneOf(CharSequence sequence)
:返回一个 CharMatcher,匹配所有不在给出序列中的字符。inRange(char startInclusive, char endInclusive)
:返回一个 CharMatcher,匹配在 startInclusive 和 endInclusive 之间的字符。appendTo(StringBuilder builder, char c)
:将字符 c 追加到 StringBuilder 中,如果它匹配当前 CharMatcher 将会被保留。collapseFrom(CharSequence sequence, char replacement)
:将给出的序列中匹配当前 CharMatcher 的连续字符替换为 replacement。removeFrom(CharSequence sequence)
:从给定序列中删除所有匹配当前 CharMatcher 的字符。retainFrom(CharSequence sequence)
:从给定序列中保留所有匹配当前 CharMatcher 的字符。trimFrom(CharSequence sequence)
:从给定序列两端去除匹配当前 CharMatcher 的字符。trimLeadingFrom(CharSequence sequence)
:从给定序列开头去除匹配当前 CharMatcher 的字符。trimTrailingFrom(CharSequence sequence)
:从给定序列结尾去除匹配当前 CharMatcher 的字符。以下是一些使用 CharMatcher 的示例(以下示例均使用以下静态导入):
import static com.google.common.base.CharMatcher.*;
删除字符串中的所有数字:
String text = "abc123def456";
text = DIGIT.retainFrom(text); // text = "abcdef"
使用多个 CharMatcher 进行过滤:
String text = " a\tb\nc\r\td e ";
text = WHITESPACE.trimAndCollapseFrom(text, ' '); // text = "a b c d e"
String text = "12-34-56";
text = '-' + DIGIT.retainFrom(text); // text = "-123456"
过滤掉字符串中的所有数字、字母和空格:
String text = "a3b %4 56!";
text = JAVA_LETTER_OR_DIGIT.or(WHITESPACE).removeFrom(text); // text = "%!@"
对字符串中的所有数字进行三位分组,并用逗号进行分隔:
String text = "123456789";
text = DIGIT.fixedLength(3).retainFrom(text); // text = "123,456,789"
判断一个字符串是否只包含大写字母:
String text = "ABC";
boolean allUpperCase = CHAR_MATCHER.ascii().and(CHAR_MATCHER.javaUpperCase()).matchesAllOf(text); // allUpperCase = true
CharMatcher 提供了一个便捷的方式来处理字符串中的字符。使用 CharMatcher,可以很容易地进行字符匹配和替换,可以快速过滤不需要的字符,可以对字符串中的字符进行分组等操作。在进行字符串处理时,CharMatcher 是一个非常有用的工具。