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

1 介绍

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

2 indent()

indent()方法,会基于参数调整每行的缩进。
当String调用indent()的时候,下列动作会发生:

  1. 字符串通过lines()方法被分割成多行。lines()方法是Java 11引入的。
  2. 每一行根据一个整型参数n,调整缩进,并以换行符\n结尾。
    a. 如果n大于0,那么n个空格会插入到每行的开始;
    b. 如果n小于0,那么n个空格将会从每行开始被移除。如果开头不够n个空格,那么就把开头所有空格删除即可。
    c. 如果n等于0,那么啥都不做。但是每行的结尾处还是会被处理。
  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));
}

传递一个负值,来减少缩进。如下:

@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()

我们可以对字符串应用一个函数tansform()。该函数的参数为一个字符串。

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

返回结果不需要是字符串。

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

4 总结:
本文介绍了Java 12 中对String增加了哪些API。示例代码见github

编译

你可能感兴趣的:(黑客日教程-提前了解一下Java12中对String的更新)