黑客日教程-提前了解一下Java12中對String的更新

1 介紹

Java 12在String上加了一波有用的API。

2 indent()

indent()方法,會基于參數(shù)調(diào)整每行的縮進(jìn)。
當(dāng)String調(diào)用indent()的時候,下列動作會發(fā)生:

  1. 字符串通過lines()方法被分割成多行。lines()方法是Java 11引入的
  2. 每一行根據(jù)一個整型參數(shù)n,調(diào)整縮進(jìn),并以換行符\n結(jié)尾。
    a. 如果n大于0,那么n個空格會插入到每行的開始;
    b. 如果n小于0,那么n個空格將會從每行開始被移除。如果開頭不夠n個空格,那么就把開頭所有空格刪除即可。
    c. 如果n等于0,那么啥都不做。但是每行的結(jié)尾處還是會被處理。
  3. 被處理過后的每行拼接起來返回。

示例:

@Test
public void whenPositiveArgument_thenReturnIndentedString() {
    String multilineStr = "This is\na multiline\nstring.";
    String outputStr = "   This is\n   a multiline\n   string.\n";
 
    String postIndent = multilineStr.indent(3);
 
    assertThat(postIndent, equalTo(outputStr));
}

傳遞一個負(fù)值,來減少縮進(jìn)。如下:

@Test
public void whenNegativeArgument_thenReturnReducedIndentedString() {
    String multilineStr = "   This is\n   a multiline\n   string.";
    String outputStr = " This is\n a multiline\n string.\n";
 
    String postIndent = multilineStr.indent(-2);
 
    assertThat(postIndent, equalTo(outputStr));
}

3 transform()

我們可以對字符串應(yīng)用一個函數(shù)tansform()。該函數(shù)的參數(shù)為一個字符串。

@Test
public void whenTransformUsingLamda_thenReturnTransformedString() {
    String result = "hello".transform(input -> input + " world!");
 
    assertThat(result, equalTo("hello world!"));
}

返回結(jié)果不需要是字符串。

@Test
public void whenTransformUsingParseInt_thenReturnInt() {
    int result = "42".transform(Integer::parseInt);
 
    assertThat(result, equalTo(42));
}

4 總結(jié):
本文介紹了Java 12 中對String增加了哪些API。示例代碼見github

編譯

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

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

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