1 介绍
Java 12在String上加了一波有用的API。
2 indent()
indent()方法,会基于参数调整每行的缩进。
当String调用indent()的时候,下列动作会发生:
- 字符串通过lines()方法被分割成多行。lines()方法是Java 11引入的。
- 每一行根据一个整型参数n,调整缩进,并以换行符\n结尾。
a. 如果n大于0,那么n个空格会插入到每行的开始;
b. 如果n小于0,那么n个空格将会从每行开始被移除。如果开头不够n个空格,那么就把开头所有空格删除即可。
c. 如果n等于0,那么啥都不做。但是每行的结尾处还是会被处理。 - 被处理过后的每行拼接起来返回。
示例:
@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