Guava記錄 - Strings類

guava提供了Strings類處理字符串相關(guān)。

1、Strings.isNullOrEmpty(null)

校驗字符串是否是空或者null。值得注意的是空格不為空
( 等價于StringUtils.isEmpty() ).

源碼如下:

public static boolean isNullOrEmpty(@Nullable String string) {
   return Platform.stringIsNullOrEmpty(string);
 }
static boolean stringIsNullOrEmpty(@Nullable String string) {
   return string == null || string.isEmpty();
 }

測試方法:

 System.out.println("===========測試isNullOrEmpty方法===============");
 System.out.println(Strings.isNullOrEmpty(null));
 System.out.println(Strings.isNullOrEmpty(""));
 System.out.println(Strings.isNullOrEmpty(" "));
 System.out.println(Strings.isNullOrEmpty("bob"));
 System.out.println(Strings.isNullOrEmpty("bob "));

輸出結(jié)果:


image.png
2、Strings.nullToEmpty(null)

驗證字符是否為null或者empty.

System.out.println("===========測試isNullOrEmpty方法===============");
System.out.println(Strings.nullToEmpty(null));
3、Strings.emptyToNull(StringUtils.EMPTY)
System.out.println("===========測試emptyToNull方法===============");
System.out.println(Strings.emptyToNull(StringUtils.EMPTY));
4、Strings.repeat()

重復(fù)字符串內(nèi)容方法,通過設(shè)置指定次數(shù)n,返回原字符*n后的字符.
值得注意的是:重復(fù)次數(shù)小于0將會拋出異常、等于0會返回空串.

測試方法如下:

System.out.println("===========測試repeat方法===============");
System.out.println(Strings.repeat("【abc】", 3));
System.out.println(Strings.repeat("【abc】", 1));
System.out.println(Strings.repeat("【abc】", 0));
System.out.println(Strings.repeat("【abc】", -1));

測試結(jié)果:


image.png
5、Strings.padStart()

小于指定字符長度,缺省頭補(bǔ)位方法

源碼如下:

public static String padStart(String string, int minLength, char padChar) {
    checkNotNull(string); // eager for GWT.
    if (string.length() >= minLength) {
      return string;
    }
    StringBuilder sb = new StringBuilder(minLength);
    for (int i = string.length(); i < minLength; i++) {
      sb.append(padChar);
    }
    sb.append(string);
    return sb.toString();
  }

方法的實現(xiàn)邏輯比較簡單,長度小于指定最小長度時,缺省的長度大小每個單位用指定char前補(bǔ)位.

測試方法如下:

System.out.println("===========測試padStart方法===============");
char testChar = 'e';
System.out.println(Strings.padStart("abc", 5, testChar));
System.out.println(Strings.padStart("ABC", 6, testChar));

測試結(jié)果:


image.png
6、Strings.padEnd()

小于指定字符長度,缺省尾補(bǔ)位方法

源碼如下:

public static String padEnd(String string, int minLength, char padChar) {
    checkNotNull(string); // eager for GWT.
    if (string.length() >= minLength) {
      return string;
    }
    StringBuilder sb = new StringBuilder(minLength);
    sb.append(string);
    for (int i = string.length(); i < minLength; i++) {
      sb.append(padChar);
    }
    return sb.toString();
  }

與前補(bǔ)位類似,長度小于指定最小長度時,缺省的長度大小每個單位用指定char后補(bǔ)位.

測試方法如下:

 System.out.println("===========測試padEnd方法===============");
 char testEndChar = 'e';
 System.out.println(Strings.padEnd("abc", 5, testEndChar));
 System.out.println(Strings.padEnd("ABC", 6, testEndChar));

測試結(jié)果:


image.png
7、Strings.commonPrefix()

返回公共前綴方法,如果沒有公共前綴,則返回空字符串

源碼如下:

public static String commonPrefix(CharSequence a, CharSequence b) {
    checkNotNull(a);
    checkNotNull(b);

    int maxPrefixLength = Math.min(a.length(), b.length());
    int p = 0;
    while (p < maxPrefixLength && a.charAt(p) == b.charAt(p)) {
      p++;
    }
    if (validSurrogatePairAt(a, p - 1) || validSurrogatePairAt(b, p - 1)) {
      p--;
    }
    return a.subSequence(0, p).toString();
  }

大致邏輯以最小長度的字符串作為最大可能的公共前綴長度,然后對每個相同下標(biāo)的char進(jìn)行比對,得出公共前綴

測試方法如下:

System.out.println("===========測試commonPrefix方法===============");
System.out.println(Strings.commonPrefix("aaaaa","b"));
System.out.println(Strings.commonPrefix("aaaaa","aaab"));
System.out.println(Strings.commonPrefix("abc","abcb"));

測試結(jié)果:


image.png
8、Strings.commonSuffix()

返回公共后綴方法,如果沒有公共后綴,則返回空字符串

源碼如下:

public static String commonSuffix(CharSequence a, CharSequence b) {
    checkNotNull(a);
    checkNotNull(b);

    int maxSuffixLength = Math.min(a.length(), b.length());
    int s = 0;
    while (s < maxSuffixLength && a.charAt(a.length() - s - 1) == b.charAt(b.length() - s - 1)) {
      s++;
    }
    if (validSurrogatePairAt(a, a.length() - s - 1)
        || validSurrogatePairAt(b, b.length() - s - 1)) {
      s--;
    }
    return a.subSequence(a.length() - s, a.length()).toString();
  }

與Strings.commonSuffix()邏輯類似,不過最終得到公共后綴

測試方法如下:

System.out.println("===========測試commonSuffix方法===============");
System.out.println(Strings.commonSuffix("aaaaa","acbaa"));
System.out.println(Strings.commonSuffix("aaaaa","aaab"));
System.out.println(Strings.commonSuffix("abcc","abacbc"));

測試結(jié)果如下:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,689評論 1 32
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,264評論 0 38
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,737評論 0 5
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,356評論 0 10
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,692評論 0 4

友情鏈接更多精彩內(nèi)容