美文网首页js css html
Guava 基础之字符串处理

Guava 基础之字符串处理

作者: Tinyspot | 来源:发表于2023-01-31 10:59 被阅读0次

1. 字符串操作 Strings

1.1 常用方法

@Test
public void test() {
    String str = null;
    boolean nullOrEmpty = Strings.isNullOrEmpty(str);
    String s = Strings.nullToEmpty(null);
    String s1 = Strings.emptyToNull("");
}

1.2 字符串填充

  • padStart(String string, int minLength, char padChar)
  • padEnd() 在尾部添加新字符串
String str = "abc";
String value = Strings.padStart(str, 5, 'A');
// AAabc

1.3 共同前缀/后缀

  • commonPrefix()
  • commonSuffix()
@Test
public void test() {
    String aa = "abc123ef";
    String bb = "abc444f";
    String prefix = Strings.commonPrefix(aa, bb);
    String suffix = Strings.commonSuffix(aa, bb);
}

2. 拆分器 Splitter

2.1 单字符分割

public static void main(String[] args) {
    String str = ",a,,b,";
    String[] split1 = str.split(',');
    System.out.println(Lists.newArrayList(split1));

    Iterable<String> split = Splitter.on(',')
            .trimResults()
            .omitEmptyStrings()
            .split(str);
    System.out.println(split);

    List<String> list = Splitter.on(',').trimResults().omitEmptyStrings().splitToList(str);
}

2.2 多字符分割

String str = "A001, A002";
List<String> list = Splitter.on(", ").trimResults().omitEmptyStrings().splitToList(str);

2.3 正则分隔

@Test
public void test() {
    Pattern pattern = Pattern.compile("\\d+");
    String str = "A001B002EF";
    List<String> list = Splitter.on(pattern).trimResults().omitEmptyStrings().splitToList(str);
    // result: [A, B, EF]
}

3. 连接器 Joiner

String join = Joiner.on(",").skipNulls().join(Arrays.asList("A", "B", "", "C"));
String join2 = Joiner.on(",").skipNulls().join(Arrays.asList("A", "B", null, "C"));

4. CharMatcher

  • CharMatcher 是个抽象类,通过一些工厂函数 is、anyOf 等创建对应的实例
  • 工厂方法
    • CharMatcher is(final char match)
    • CharMatcher anyOf(final CharSequence sequence)

4.1 判定型函数

boolean result = CharMatcher.is('a').matchesAnyOf("aba");

4.2 计数型函数

int index = CharMatcher.is('a').indexIn("java");
int count = CharMatcher.is('a').countIn("java");

4.3 匹配字符

处理单字符:
CharMatcher.is(char)
CharMatcher. isNot(char)

String retainStr = CharMatcher.is('a').retainFrom("Java");
String str = CharMatcher.is('a').removeFrom("Java");

处理多字符:
CharMatcher.anyOf(CharSequence)
CharMatcher.noneOf(CharSequence)

@Test
public void test() {
    String result = CharMatcher.anyOf("ab").removeFrom("abcdddabc");

    // trim 匹配首尾字符
    String result2 = CharMatcher.anyOf("ab").trimFrom("abcdddab");
    String result3 = CharMatcher.anyOf("ab").trimLeadingFrom("abcdddab");
    String result4 = CharMatcher.anyOf("ab").trimTrailingFrom("abcdddab");
}

4.4 预定义常量

// 移除控制字符(\t,\n,\b...)
String s = CharMatcher.javaIsoControl().removeFrom("ab\r\ner");

相关文章

网友评论

    本文标题:Guava 基础之字符串处理

    本文链接:https://www.haomeiwen.com/subject/oagvhdtx.html