HOWTO · Java

在 Java 中將字串轉換為整數陣列

本文介紹了在 Java 中將字串轉換為整數陣列的方法。

在 Java 語言中,可以有幾種方法來考慮問題陳述。

讓我們首先將問題陳述分為兩部分。

  1. 將一個簡單的字串轉換為字串陣列。
  2. 將字串陣列轉換為整數陣列。

這是以上兩個步驟的示意圖:

Java 中將字串轉換為整數的流程圖

使用 replaceAll() 方法將字串轉換為整數陣列

我們可以使用 String 類的 replaceAll() 方法,該方法帶有 regexreplacement 兩個引數。此方法將用給定的替換值替換給定的正規表示式。在鏈函式的末尾,使用了 split() 方法。此方法根據給定的字元拆分字串。

當值被拆分並收集到 String 陣列中時,我們應該使用 Integer.parseInt() 函式。由於 parseInt() 方法丟擲 NumberFormatException,因此該語句應放在一個 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() 方法,該方法接受第一個和最後一個索引引數。在返回的 String split() 函式上,該函式基於定界符分割給定的 String。

在流上應用了 map() 函式。此函式將任何函式作為引數並返回流。我們給出了 String 類的 trim() 函式,該函式消除了前導和後導空格。parseInt 將收到的給定字串轉換為整數。toArray() 將轉換後的 int 元素轉儲到 Array 中。

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 和函式將字串轉換為整數陣列

使用其建構函式 StringTokenizer() 例項化 StringTokenizer 物件。建構函式使用輸入的 String 和定界符形成標記化的 String。同時建立一個 String 和 int 陣列,其大小作為令牌化 String 中的令牌。

countTokens() 方法對令牌計數,該令牌在內部跳過定界符。hasMoreTokens() 檢查令牌生成器字串中是否存在任何令牌。nextToken() 從字串中檢索下一個標記。如果字串中沒有令牌,則此方法將引發 NoSuchElementException

迭代將 String 令牌轉換為整數並收集到整數陣列中。

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