Java で文字列の文字列を反復処理する

Rupam Yadav 2023年10月12日
  1. Java 8 で String.chars() を使って文字列内のすべての文字を反復処理する
  2. Java 8 で String.codePoints() を用いて文字列中のすべての文字をループさせる方法
  3. String.toCharArray() を使用すると、Java で文字列内のすべての文字をループさせることができる
  4. StringCharacterIterator を使って Java の文字列内のすべての文字を反復処理する
  5. Java で String.split() を使用して文字列内のすべての文字をループする
Java で文字列の文字列を反復処理する

この記事では、Java で文字列内のすべての文字を反復処理するための様々な方法を紹介します。

Java 8 で String.chars() を使って文字列内のすべての文字を反復処理する

Java 8 では、新しいメソッド String.chars() を提供しており、これは IntStream を返します。返された IntStream には、文字列内の文字の整数表現が含まれています。ここでは myString.chars() から stream1 を取得しています。

戻り値の IntStream をオブジェクトにマップします。stream1.mapToObj() は整数値をそれぞれの文字に変換します。しかし、文字を表示したり読んだりするためには、ユーザーフレンドリーな文字形式に変換する必要があります。

import java.util.stream.IntStream;

public class ForEachChar {
  public static void main(String[] args) {
    String myString = "Hello There!";
    String myString2 = "My Friends";
    String myString3 = "Happy Coding";

    IntStream stream1 = myString.chars();
    IntStream stream2 = myString2.chars();
    IntStream stream3 = myString3.chars();

    stream1.mapToObj(Character::toChars).forEach(System.out::print);
    System.out.println("");

    stream2.mapToObj(i -> new Character((char) i)).forEach(System.out::print);
    System.out.println("");

    stream3.forEach(i -> System.out.print(Character.toChars(i)));
  }
}

出力:

Hello There!
My Friends
Happy Coding

Java 8 で String.codePoints() を用いて文字列中のすべての文字をループさせる方法

Java 8 String.codePoints() は、このシーケンスから Unicode コードポイントの IntStream を返します。これは渡された文字の ASCII 値を返します。

返された IntStream をオブジェクトにマッピングするには、stream.mapToObj を用いれば、自動的に Stream<Character> に変換されます。メソッド参照を利用して、指定された文字列の各文字を表示します。

import java.util.stream.IntStream;

public class ForEachChar {
  public static void main(String[] args) {
    String myString = "Happy Coding";
    IntStream stream = myString.codePoints();
    stream.mapToObj(Character::toChars).forEach(System.out::print);
  }
}

出力:

Happy Coding 

String.toCharArray() を使用すると、Java で文字列内のすべての文字をループさせることができる

String.toCharArray() メソッドは、与えられた文字列を文字列に変換します。これは文字列の長さと同じ長さの Character 配列を返します。

文字列中のすべての文字を繰り返し処理するには、toCharArray() を用いて各文字を表示することができます。

public class ForEachChar {
  public static void main(String[] args) {
    String myString = "Hello Friends";
    char[] chars = myString.toCharArray();
    int len = chars.length;
    System.out.println("length of the char array: " + len);
    for (char ch : chars) {
      System.out.println(ch);
    }
  }
}

出力:

length of the char array: 13
H
e
l
l
o
 
F
r
i
e
n
d
s

StringCharacterIterator を使って Java の文字列内のすべての文字を反復処理する

StringCharacterIterator クラスは文字列の双方向の反復処理を実装しています。文字列をパラメータとして受け取り、初期インデックスが 0 のイテレータを構築します。

このイテレータは現在の位置にある文字を返すか、現在の位置がテキストの終わりの場合は DONE を返します。

itnext() メソッドは新しい位置にある文字を返すか、新しい位置がテキストの終わりであれば DONE を返します。

import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
public class ForEachChar {
  public static void main(String[] args) {
    String myString = "Hello Friends";
    CharacterIterator it = new StringCharacterIterator(myString);

    while (it.current() != CharacterIterator.DONE) {
      System.out.print(it.current());
      it.next();
    }
  }
}

出力:

Hello Friends

Java で String.split() を使用して文字列内のすべての文字をループする

String.split() メソッドは、与えられた正規表現に対して文字列を分割し、新しい配列を返します。

以下のコードでは、myString.split("") を用いて文字列を分割しています。これで、str_arr 内のすべての文字を反復処理して表示することができます。

public class ForEachChar {
  public static void main(String[] args) {
    String myString = "Hello Friends";
    String[] str_arr = myString.split("");

    for (String ch : str_arr) {
      System.out.print(ch);
    }
  }
}

出力:

Hello Friends
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java String

関連記事 - Java Char