java12-string-api
Java 12の文字列APIの更新
1. 前書き
Java 12は、いくつかの便利なAPIをlink:/java-string[_String_ class]に追加しました。 このチュートリアルでは、これらの新しいAPIを例とともに紹介します。
2. インデント()
_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));
}
負の_int_を渡して、文字列のインデントを減らすこともできます。 例えば:
@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()_メソッドを使用して、_this_文字列に関数を適用できます。 関数は、単一の_String_引数を予期し、結果を生成する必要があります。
@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について説明しました。 いつものように、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-12[GitHubで]にあります。