1. 程式人生 > >guava(三)字符串處理 Joiner Splitter CharMatcher

guava(三)字符串處理 Joiner Splitter CharMatcher

iter app 匹配條件 ive mmu item 小寫 include ins

一、Joiner

拼接字符串

1、join 拼接集合中的元素

System.out.println(Joiner.on(";").join(Ints.asList(1,2,3))); //1;2;3

2、skipNullls 過濾null

 Joiner joiner=Joiner.on(";").skipNulls();
 System.out.println(joiner.join("1",null,"22")); //1;22

3、useForNull 替換null

 Joiner joiner=Joiner.on(";").useForNull("default");
 System.out.println(joiner.join("1",null,"22"));//1;default;22

4、withKeyValueSeparator 拼接map中的元素

 System.out.println(Joiner.on("#").withKeyValueSeparator("=").join(ImmutableMap.of("a",1,"b",2)));//a=1#b=2

二、Splitter

分割字符串

1、split 分割字符串,轉集合

Iterable<String> iterable=Splitter.on(";").split("aa;b;cc");

2、splitToList 分割字符串,轉list

List<String> list=Splitter.on(";").splitToList("aa;b;cc");

3、omitEmptyStrings 過濾空串

 List<String> list=Splitter.on(";").omitEmptyStrings().splitToList("aa; ;b;cc");
 System.out.println(list);//[aa,b,cc]

4、trimResults 將制定charmatcher轉空串

List<String> list=Splitter.on(";").trimResults(CharMatcher.anyOf("a")).splitToList("aa;b");//[ ,b]

5、limit 分割到指定個數便不再分割

List<String> list=Splitter.on(";").limit(2).splitToList("aa;b;c");//[aa,b;c]

6、轉map

 Map<String,String> map=Splitter.on(";").withKeyValueSeparator("=").split("a=1;b=2");//{a=1,b=2}

三、CharMatcher

找到匹配的字符串or處理匹配的字符串

1、CharMatcher本身提供了很多CharMatcher實現類,如下:

ANY: 匹配任何字符

ASCII: 匹配是否是ASCII字符

BREAKING_WHITESPACE: 匹配所有可換行的空白字符(不包括非換行空白字符,例如"\u00a0")

DIGIT: 匹配ASCII數字

INVISIBLE: 匹配所有看不見的字符

JAVA_DIGIT: 匹配UNICODE數字, 使用 Character.isDigit() 實現

JAVA_ISO_CONTROL: 匹配ISO控制字符, 使用 Charater.isISOControl() 實現

JAVA_LETTER: 匹配字母, 使用 Charater.isLetter() 實現

JAVA_LETTER_OR_DIGET: 匹配數字或字母

JAVA_LOWER_CASE: 匹配小寫

JAVA_UPPER_CASE: 匹配大寫

NONE: 不匹配所有字符

SINGLE_WIDTH: 匹配單字寬字符, 如中文字就是雙字寬

WHITESPACE: 匹配所有空白字符

以靜態屬性的方式使用。舉個例子:

 @Deprecated
  public static final CharMatcher JAVA_LOWER_CASE = javaLowerCase();
 public static CharMatcher javaLowerCase() {
    return JavaLowerCase.INSTANCE;
  }
 private static final class JavaLowerCase extends CharMatcher {

    static final JavaLowerCase INSTANCE = new JavaLowerCase();

    @Override
    public boolean matches(char c) {
      return Character.isLowerCase(c);
    }

    @Override
    public String toString() {
      return "CharMatcher.javaLowerCase()";
    }
  }

2、常用操作方法

CharMatcher is(char match): 返回匹配指定字符的Matcher

CharMatcher isNot(char match): 返回不匹配指定字符的Matcher

CharMatcher anyOf(CharSequence sequence): 返回匹配sequence中任意字符的Matcher

CharMatcher noneOf(CharSequence sequence): 返回不匹配sequence中任何一個字符的Matcher

CharMatcher inRange(char startInclusive, char endIncludesive): 返回匹配範圍內任意字符的Matcher

CharMatcher forPredicate(Predicate<? super Charater> predicate): 返回使用predicate的apply()判斷匹配的Matcher

CharMatcher negate(): 返回以當前Matcher判斷規則相反的Matcher

CharMatcher and(CharMatcher other): 返回與other匹配條件組合做與來判斷的Matcher

CharMatcher or(CharMatcher other): 返回與other匹配條件組合做或來判斷的Matcher

boolean matchesAnyOf(CharSequence sequence): 只要sequence中有任意字符能匹配Matcher,返回true

boolean matchesAllOf(CharSequence sequence): sequence中所有字符都能匹配Matcher,返回true

boolean matchesNoneOf(CharSequence sequence): sequence中所有字符都不能匹配Matcher,返回true

int indexIn(CharSequence sequence): 返回sequence中匹配到的第一個字符的坐標

int indexIn(CharSequence sequence, int start): 返回從start開始,在sequence中匹配到的第一個字符的坐標

int lastIndexIn(CharSequence sequence): 返回sequence中最後一次匹配到的字符的坐標

int countIn(CharSequence sequence): 返回sequence中匹配到的字符計數

String removeFrom(CharSequence sequence): 刪除sequence中匹配到到的字符並返回

String retainFrom(CharSequence sequence): 保留sequence中匹配到的字符並返回

String replaceFrom(CharSequence sequence, char replacement): 替換sequence中匹配到的字符並返回

String trimFrom(CharSequence sequence): 刪除首尾匹配到的字符並返回

String trimLeadingFrom(CharSequence sequence): 刪除首部匹配到的字符

String trimTrailingFrom(CharSequence sequence): 刪除尾部匹配到的字符

String collapseFrom(CharSequence sequence, char replacement): 將匹配到的組(連續匹配的字符)替換成replacement

String trimAndCollapseFrom(CharSequence sequence, char replacement): 先trim在replace

guava(三)字符串處理 Joiner Splitter CharMatcher