** 1はじめに

**

Java 11では、一般的に使用されるhttps://www.baeldung.com/java-string[

String

class]にいくつかの便利なAPIが追加されました。このチュートリアルでは、これらの新しいAPIを調べて使用します。


2

繰り返す()


名前が示すように、

repeat()

インスタンスメソッドは文字列の内容を繰り返します。

  • 値が

    n

    回繰り返されたストリングの連結であるストリングを返します。ここで、

    n

    はパラメーターとして渡されます** :

@Test
public void whenRepeatStringTwice__thenGetStringTwice() {
    String output = "La ".repeat(2) + "Land";

    is(output).equals("La La Land");
}

さらに、

repeat()

は、文字列が空の場合、またはカウントが0の場合、空の文字列を返します。


3

ストリップ


()**


  • strip()

    インスタンスメソッドは、先頭と末尾の空白をすべて削除した文字列を返します。

@Test
public void whenStripString__thenReturnStringWithoutWhitespaces() {
    is("\n\t  hello   \u2005".strip()).equals("hello");
}

Java 11では、先頭と末尾の空白をそれぞれ処理する

stripLeading()

メソッドと

stripTrailing()

メソッドも追加されました。


3.1.

strip()



trim()


の違い


strip ** ()

は、

Character.isWhitespace()

に基づいて、文字が空白かどうかを判断します。言い換えれば、これはUnicodeの空白文字を認識しています。

これは、スペースをUnicodeスペース文字以下の任意の文字として定義するhttps://www.baeldung.com/string/trim[

trim()

]とは異なります(U 0020)。前の例で

trim()

を使用すると、異なる結果になります。

@Test
public void whenTrimAdvanceString__thenReturnStringWithWhitespaces() {
    is("\n\t  hello   \u2005".trim()).equals("hello   \u2005");
}


trim()

が先頭の空白を削除することができたことに注意してください。しかし、末尾の空白を削除しませんでした。これは


trim()


がUnicodeの空白文字を認識しないため、「__ \ u2005」を空白文字と見なさないためです。


4

isBlank()



  • isBlank()

    インスタンスメソッドは、文字列が空の場合、または空白のみを含む場合は

    true

    を返します。そうでなければ、

    false

    ** を返します。

@Test
public void whenBlankString__thenReturnTrue() {
    assertTrue("\n\t\u2005  ".isBlank());
}

同様に、

isBlank()

メソッドは

strip()

と同様に、Unicodeの空白文字を認識します。


5

lines()



  • lines()

    インスタンスメソッドは、文字列から抽出された行のhttps://www.baeldung.com/java-8-streams-introdu[[

    Stream

    ]を行終了記号で区切って返します。

@Test
public void whenMultilineString__thenReturnNonEmptyLineCount() {
    String multilineStr = "This is\n \n a multiline\n string.";

    long lineCount = multilineStr.lines()
      .filter(String::isBlank)
      .count();

    is(lineCount).equals(3L);
}

行末記号は、次のいずれかです。

“\ n”、


“\ r”、

、または “__ r \ n”

  • ストリームには、発生順に行が含まれています。各行から行末記号が削除されます。

このメソッドは

split()

よりも優先されるべきです、なぜならそれは複数行の入力を分割するためにより良いパフォーマンスを提供するからです。


6. 結論

このクイック記事では、Java 11の新しいString APIについて説明しました。

最後に、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/core-java-11[GitHubに追加]を見つけることができます。