Java >> Java チュートリアル >  >> Tag >> String

Java で文字列を Int 配列に変換する

Java 言語では、問題文を考えるためのいくつかのアプローチがあります。

まず、問題文を 2 つの部分に分けてみましょう。

<オール>
  • 単純な文字列を文字列配列に変換します。
  • String 配列を int 配列に変換します。
  • 上記の 2 つの手順を図で表したものが次のとおりです。

    replaceAll() を使用して文字列を Int 配列に変換する 方法

    replaceAll() を使用できます String のメソッド regex の 2 つの引数を取るクラス そして replacement 値。このメソッドは、指定された正規表現を指定された置換値に置き換えます。そしてチェーン関数の最後に、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 Stream Library を使用して文字列を Int 配列に変換

    以下のプログラムでは、最初に Arrays.stream() を取得しています。 関数。これにストリームを提供するために、 substring() を使用しました String のメソッド このクラスは、最初と最後のインデックス パラメータを受け取ります。返された文字列 split() について デリミタに基づいて指定された文字列を分割する関数が適用されます。

    ストリーム map() を越えて 機能が適用されます。この関数は、任意の関数を引数として取り、ストリームを返します。 trim() を指定しました 先頭と後続の空白を削除した String クラスの関数。 parseInt 受け取った特定の String を 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 オブジェクトをインスタンス化します .コンストラクターは、入力文字列と区切り文字を受け取り、トークン化された文字列を形成します。トークン化された文字列内のトークンとしてサイズを持つ文字列と int の配列を同時に作成します。

    countTokens() メソッドはトークンをカウントし、内部的に区切り文字をスキップします。 hasMoreTokens() トークナイザー文字列にトークンが存在するかどうかを確認します。 nextToken() String から次のトークンを取得します。このメソッドは NoSuchElementException をスローします 文字列にトークンが存在しない場合。

    String トークンを 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
    

    Java タグ