1 介紹
Java 12在String上加了一波有用的API。
2 indent()
indent()方法,會基于參數(shù)調(diào)整每行的縮進(jìn)。
當(dāng)String調(diào)用indent()的時候,下列動作會發(fā)生:
- 字符串通過lines()方法被分割成多行。lines()方法是Java 11引入的。
- 每一行根據(jù)一個整型參數(shù)n,調(diào)整縮進(jìn),并以換行符\n結(jié)尾。
a. 如果n大于0,那么n個空格會插入到每行的開始;
b. 如果n小于0,那么n個空格將會從每行開始被移除。如果開頭不夠n個空格,那么就把開頭所有空格刪除即可。
c. 如果n等于0,那么啥都不做。但是每行的結(jié)尾處還是會被處理。 - 被處理過后的每行拼接起來返回。
示例:
@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