検索

キーワード


目次

【Java】String#joinメソッドとStringjonerクラス(Java8 以降追加の文字列結合!)

  • 公開日:2020-08-03 13:50:20
  • 最終更新日:2022-03-18 11:09:43
【Java】String#joinメソッドとStringjonerクラス(Java8 以降追加の文字列結合!)

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。新人エンジニアのサトウです。

システムエンジニアとして駆け出したばかりですが、

初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。


プログラム初心者にも✅、プログラムに興味がある人✨も、

短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!

Java8 以降に追加された文字列結合

Java8 以降の文字列結合の方法として


①StringJoiner を使用する方法と

②String の join メソッドを使用する方法 


が追加されました。今回はそちらを紹介します。


joinメソッド以外のStringクラスメソッドについては以下の記事で紹介しています。

参考記事リンク:【Java】Stringクラスについての理解と基本的な文字列操作



joinメソッドやStringJoinerクラスの登場により区切り文字や接頭辞・接尾辞を使った文字列の構築が

簡単に実装できるようになりました。

CSVフォーマットやJSONフォーマット、URLのパラメータを生成する場面などでも活用できる機能に

なっており、プログラムの可読性、生産性の向上にもつながります。



【java.langパッケージ/ Stringクラス】joinメソッド

String String.join(区切り文字, 連結する文字列, ... ,連結する文字列)

区切り文字と文字列を連結させて一つの文字列を構築するのがjoinメソッドです。

第一引数には区切り文字を指定し、第二引数以降には文字列を指定します。


では例をみてみましょう。

今回は、第一引数に:(コロン)を指定し、第二引数以降には山手線の駅名の文字列を入れました。

public class Test {
    public static void main(String[ ] args) {

    	String s = String.join(":", "東京","品川","新宿");

		System.out.println(s);
    }
}

出力すると

東京:品川:新宿

となります。


またはjoinメソッドは区切り文字とString型の配列を連結 させることもできます。

String String.join(区切り文字, 配列)

第一引数には区切り文字を指定し、第二引数にはString型の 配列を指定します。

こちらも例をみてみましょう。

public class Test {
    public static void main(String[ ] args) {

    	String[] str= new String[] {"東京","品川","新宿","池袋","神田"};

    	String s = String.join(":", str);

		System.out.println(s);
    }
}

出力すると

東京:品川:新宿:池袋:神田

となります。



【java.utilパッケージ】StringJoinerクラス

StringJoinerクラスは、
区切り文字で区切られ、指定された接頭語から始まり、指定された接尾語で終わる文字列を構築するために使用されます。


今回は基本的な操作 を紹介します。


①StringJoiner値をStringオブジェクトに変更する操作(toStringメソッド)

②初期化と要素の追加する操作(addメソッド)

③StringJoiner値同士を結合する操作(mergeメソッド)


StringJoinerクラスはjava.utilパッケージの中に存在しているため、使う時はjava.util.StringJoinerをインポートする必要があります。


- StringJoiner値をStringオブジェクトに変更する操作/toStringメソッド

String toString()

toStringメソッドは、StringJoiner値をStrig値に変換するメソッドであると覚えておいてください。

addメソッドやmergeメソッドの説明例で使用するため今回紹介しています。


このメソッドが使用されたStringJoiner値はStringへ変換され、Stringオブジェクトとして使用できるようになります。

このメソッドの使用例は この後のメソッドの説明例を見てください。


- 初期化と要素の追加する操作/addメソッド

初期化について

StringJoiner sj= new StringJoiner(句切り文字);
StringJoiner sj= new StringJoiner(句切り文字, 接頭語, 接尾語);

初期化の際に引数を上記のように指定します。


初期化しただけの状態で実行すると

import java.util.StringJoiner;

public class Test {
    public static void main(String[ ] args) {
        //初期化
        StringJoiner sj= new StringJoiner(":");
        StringJoiner tj= new StringJoiner(":", "[", "]");

        String s = sj.toString();
    	String t = tj.toString();

		System.out.println(s);
        System.out.println(t);
    }
}


区切り文字のみが引数の場合は、何も表示されていないですが、これで初期化が出来ています。

要素の追加によって、接頭接尾語が無く、「:」(コロン)で句切られた文字列が構築されます。

  

接頭語、接尾語が引数に含まれる場合は、接頭語、接尾語のみが出力されました。

要素の追加によって、接頭接尾語で囲まれ「:」(コロン)で句切られた文字列が構築されます。

[]


要素の追加について

StringJoiner add(文字列)

addメソッドは引数に指定された文字列を、StringJoiner値の要素として順に追加できます。


例をみてみましょう。

今回は、StringJoinerの初期化で 第一引数に:(コロン)を指定し、接頭語/接尾語に[](大カッコ)を指定しています。

import java.util.StringJoiner;

public class Test {
    public static void main(String[ ] args) {

    	StringJoiner sj= new StringJoiner(":", "[", "]");

    	sj.add("東京").add("品川").add("新宿").add("池袋");

    	//toStringメソッド
    	String s = sj.toString();

		System.out.println(s);
    }
}

出力すると

[東京:品川:新宿:池袋]

となります。


以下の書き方は同じ意味です。

sj.add("東京").add("品川").add("新宿").add("池袋");
sj.add("東京");
sj.add("品川");
sj.add("新宿");
sj.add("池袋");



- StringJoiner値同士を結合する操作/mergeメソッド

StrindJoiner merge(StringJoiner other)

mergeメソッドは、StringJoiner値同士を連結させるメソッドです。

引数には、別のStringJoiner値を指定します。引数に指定されたStringJoiner値は、接頭語と接尾語を除いて連結されます。


注意するのは、指定されたStringJoinerが空の場合、このメソッドは効果を発揮しません。

addメソッドで要素を追加した後に、mergeメソッドを使用することになります。


addメソッドの例に加え、StringJoiner値(変数tj)を追加し、連結をしています。

import java.util.StringJoiner;

public class Test {
    public static void main(String[ ] args) {

    	StringJoiner sj= new StringJoiner(":", "[", "]");
    	sj.add("東京").add("品川").add("新宿").add("池袋");

    	//追加
    	StringJoiner tj= new StringJoiner("、","<",">");
    	tj.add("神田").add("上野").add("原宿");

    	String s = sj.toString();
    	String t = tj.toString();	

    	//mergeメソッド
		sj.merge(tj);
				
		String u = sj.toString();

		System.out.println("sjの中身"+s);
		System.out.println("tjの中身"+t);
		System.out.println("連結された中身"+u);
    }
}

出力すると

sjの中身[東京:品川:新宿:池袋]
tjの中身<神田、上野、原宿>
連結された中身[東京:品川:新宿:池袋:神田、上野、原宿]

となります。


StringJoiner値が連結されたのがわかると思います。

mergeメソッドは、接頭接尾語を除いた文字列を連結するので区切り文字は変わりません。

連結の中身の区切り文字は「:」(コロン)「、」(読点)が混在しています。


どちらかに揃えたい場合は、StringクラスのreplaceAllメソッドで置換するのが便利です。

参考:【Java】Stringクラスについての理解と基本的な文字列操作


【著者】

新人SEサトウ

読者を始め私自身も知りたい!と思うような知って得するプログラミング知識やIT情報を日々発信中です。
教養のあるカッコいい大人になれるよう、プログラミングを始め興味関心を持ったことを毎日勉強しております !!

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様