Java で文字列を Int 配列に変換する
-
replaceAll()
メソッドを使用して文字列を Int 配列に変換する - Java 8 ストリームライブラリを使用して文字列を Int 配列に変換する
- StringTokenizer と関数を使用して文字列を Int 配列に変換する
Java 言語では、問題ステートメントについて考えるためのいくつかのアプローチがあります。
まず、問題の説明を 2つの部分に分けてみましょう。
- 単純な文字列を文字列配列に変換します。
- 文字列配列を int 配列に変換します。
上記の 2つのステップを図で表したものは次のとおりです。
replaceAll()
メソッドを使用して文字列を Int 配列に変換する
regex
と replacement
の 2つの引数を取る String
クラスの replaceAll()
メソッドを使用できます。このメソッドは、指定された正規表現を指定された置換値に置き換えます。そして、チェーン関数の最後に、split()
メソッドが使用されます。このメソッドは、指定された文字に基づいて文字列を分割します。
値が文字列配列に分割および収集される場合は、Integer.parseInt()
関数を使用する必要があります。parseInt()
メソッドは NumberFormatException
をスローするため、例外をキャッチするには、ステートメントを 1つの try...catch
ブロックに含める必要があります。
以下は、文字列から int 配列への変換を示すサンプルプログラムです。
package stringToIntArray;
import java.util.Arrays;
public class ConvertStringToIntArray {
public static void main(String... args) {
String testString = "[1,2,356,678,3378]";
String[] separatedStrings = testString.replaceAll("\\[", "").replaceAll("]", "").split(",");
int[] intArray = new int[separatedStrings.length];
for (int i = 0; i < separatedStrings.length; i++) {
try {
intArray[i] = Integer.parseInt(separatedStrings[i]);
} catch (Exception e) {
System.out.println("Unable to parse string to int: " + e.getMessage());
}
}
System.out.println(Arrays.toString(intArray));
}
}
出力:
[1,2,356,678,3378]
testString
の値が [1,2,356,678,3378,f]
の場合、例外がスローされ、出力は次のようになります。
Unable to parse string to int: For input string: "f"
[1, 2, 356, 678, 3378, 0]
Java 8 ストリームライブラリを使用して文字列を Int 配列に変換する
以下のプログラムでは、最初に、Arrays.stream()
関数を使用しました。これにストリームを提供するために、最初と最後のインデックスパラメータを受け取る String
クラスの substring()
メソッドを使用しました。返された文字列に split()
関数が適用され、区切り文字に基づいて指定された文字列が分割されます。
ストリーム上で map()
関数が適用されます。この関数は、任意の関数を引数として取り、ストリームを返します。String クラスの trim()
関数を指定して、先頭と後続の空白を削除しました。parseInt
は、受け取った指定の文字列を int に変換します。toArray()
は、変換された int 要素を配列にダンプします。
package stringToIntArray;
import java.util.Arrays;
public class StringToIntUsingJava
8Stream {
public static void main(String[] args) {
String str = "[1, 2, 3, 4, 5]";
int[] arr = Arrays.stream(str.substring(1, str.length() - 1).split(","))
.map(String::trim)
.mapToInt(Integer::parseInt)
.toArray();
System.out.println(Arrays.toString(arr));
}
}
出力:
[1, 2, 3, 4, 5]
StringTokenizer と関数を使用して文字列を Int 配列に変換する
コンストラクターStringTokenizer()
を使用して StringTokenizer オブジェクトをインスタンス化します。コンストラクターは、入力文字列と区切り文字を使用して、トークン化された文字列を形成します。トークン化された文字列のトークンとしてサイズを持つ String と int の配列を同時に作成します。
countTokens()
メソッドはトークンをカウントし、内部的に区切り文字をスキップします。hasMoreTokens()
は、トークナイザー文字列にトークンが存在するかどうかを確認します。nextToken()
は、文字列から次のトークンを取得します。文字列にトークンが存在しない場合、このメソッドは NoSuchElementException
をスローします。
文字列トークンを int に変換し、int 配列に収集することを繰り返します。
package stringToIntArray;
import java.util.StringTokenizer;
public class StringToIntUsingStringTokenizer {
public static void main(String[] args) {
String testString = "[1,2,3,4]";
StringTokenizer stk = new StringTokenizer(testString, "[,]");
String[] strings = new String[stk.countTokens()];
int[] integerArray = new int[stk.countTokens()];
int i = 0;
while (stk.hasMoreTokens()) {
strings[i] = stk.nextToken();
integerArray[i] = Integer.parseInt(strings[i]);
i++;
}
for (int j = 0; j < integerArray.length; j++)
System.out.println("number[" + j + "]=" + integerArray[j]);
}
}
出力:
number[0]=1
number[1]=2
number[2]=3
number[3]=4
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn関連記事 - Java String
- Java で 16 進文字列のバイト配列を変換する方法
- Java で文字列から部分文字列を削除する方法
- Java で文字列から文字列配列への変換を実行する方法
- Java 文字列をバイトに変換する方法
- Java でランダムな文字列を生成する
- Java のスワップメソッド