google guava中定義的String操作

韓師學子--胖佳發表於2019-02-25

               google guava中定義的String操作

 

轉載:http://outofmemory.cn/java/guava/base/Strings

介紹google guava對字串操作的封裝,包括判斷字串是否為空,取字串的相同字首,字尾,以及補全字串;連線字串,拆分字串等常用的字串的操作。

在google guava中為字串操作提供了很大的便利,有老牌的判斷字串是否為空字串或者為null,用指定字元填充字串,以及拆分合並字串,字串匹配的判斷等等。

下面我們逐一瞭解這些操作:

1. 使用com.google.common.base.Strings類的isNullOrEmpty(input)方法判斷字串是否為空

   //Strings.isNullOrEmpty(input) demo
        String input = "";
        boolean isNullOrEmpty = Strings.isNullOrEmpty(input);
        System.out.println("input " + (isNullOrEmpty?"is":"is not") + " null or empty.");

2. 獲得兩個字串相同的字首或者字尾

 //Strings.commonPrefix(a,b) demo
        String a = "com.jd.coo.Hello";
        String b = "com.jd.coo.Hi";
        String ourCommonPrefix = Strings.commonPrefix(a,b);
        System.out.println("a,b common prefix is " + ourCommonPrefix);

        //Strings.commonSuffix(a,b) demo
        String c = "com.google.Hello";
        String d = "com.jd.Hello";
        String ourSuffix = Strings.commonSuffix(c,d);
        System.out.println("c,d common suffix is " + ourSuffix);

3. Strings的padStart和padEnd方法來補全字串

int minLength = 4;
        String padEndResult = Strings.padEnd("123", minLength, '0');
        System.out.println("padEndResult is " + padEndResult);

        String padStartResult = Strings.padStart("1", 2, '0');
        System.out.println("padStartResult is " + padStartResult);

 

4. 使用Splitter類來拆分字串

Splitter類可以方便的根據正規表示式來拆分字串,可以去掉拆分結果中的空串,可以對拆分後的字串做trim操作,還可以做二次拆分。

我們先看一個基本的拆分例子:

 Iterable<String> splitResults = Splitter.onPattern("[,,]{1,}")
                .trimResults()
                .omitEmptyStrings()
                .split("hello,word,,世界,水平");

        for (String item : splitResults) {
            System.out.println(item);
        }

Splitter的onPattern方法傳入的是一個正規表示式,其後緊跟的trimResults()方法表示要對結果做trim,omitEmptyStrings()表示忽略空字串,split方法會執行拆分操作。

split返回的結果為Iterable<String>,我們可以使用for迴圈語句來逐個列印拆分字串的結果。

Splitter還有更強大的功能,做二次拆分,這裡二次拆分的意思是拆分兩次,例如我們可以將a=b;c=d這樣的字串拆分成一個Map<String,String>。
 

String toSplitString = "a=b;c=d,e=f";
        Map<String,String> kvs = Splitter.onPattern("[,;]{1,}").withKeyValueSeparator('=').split(toSplitString);
        for (Map.Entry<String,String> entry : kvs.entrySet()) {
            System.out.println(String.format("%s=%s", entry.getKey(),entry.getValue()));
        }

二次拆分首先是使用onPattern做第一次的拆分,然後再通過withKeyValueSeperator('')方法做第二次的拆分。

5. 有拆分字串必然就有合併字串,guava為我們提供了Joiner類來做字串的合併

我們先看一個簡單的示例:

    String joinResult = Joiner.on(" ").join(new String[]{"hello","world"});
        System.out.println(joinResult);

上面例子中我們使用Joiner.on(" ").join(xx)來合併字串。很簡單也很有效。

Splitter方法可以對字串做二次的拆分,對應的Joiner也可以逆向操作,將Map<String,String>做合併。我們看下下面的例子:
 

  Map<String,String> map = new HashMap<String,String>();
        map.put("a", "b");
        map.put("c","d");
        String mapJoinResult = Joiner.on(",").withKeyValueSeparator("=").join(kvs);
        System.out.println(mapJoinResult);

使用withKeyValueSeparator方法可以對map做合併。合併的結果是:a=b,c=d

guava庫中還可以對字串做大小寫轉換(CaseFormat列舉),可以對字串做模式匹配。使用起來都很方便,就不一一介紹了。

相關文章