1. 简介
Java 12向String类添加了几个有用的API,在本教程中,我们将通过示例来探索这些新的API。
2. indent()
indent()方法根据传递给它的参数调整字符串每一行的缩进。
当在字符串上调用indent()时,会执行以下操作:
-
该字符串在概念上使用lines()分成几行,lines()是Java 11中引入的String API。
-
然后根据传递给它的int参数n调整每一行,然后以换行符“\n”作为后缀。
-
如果n > 0,则在每行的开头插入n个空格。
-
如果n < 0,则从每行的开头最多删除n个空格字符,如果给定行不包含足够的空格,则删除所有前导空格字符。
-
如果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()
我们可以使用transform()方法将函数应用于此字符串,该函数应该期望单个String参数并产生一个结果:
@Test
void whenTransformUsingLambda_thenReturnTransformedString() {
String result = "hello".transform(input -> input + " world!");
assertThat(result, equalTo("hello world!"));
}
输出不必是字符串。例如:
@Test
void whenTransformUsingParseInt_thenReturnInt() {
int result = "42".transform(Integer::parseInt);
assertThat(result, equalTo(42));
}
4. 总结
在本文中,我们探讨了Java 12中的新添加的String API。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章