HOWTO · Java
在 Java 中將字串轉換為整數陣列
本文介紹了在 Java 中將字串轉換為整數陣列的方法。
在 Java 語言中,可以有幾種方法來考慮問題陳述。
讓我們首先將問題陳述分為兩部分。
- 將一個簡單的字串轉換為字串陣列。
- 將字串陣列轉換為整數陣列。
這是以上兩個步驟的示意圖:
使用 replaceAll() 方法將字串轉換為整數陣列
我們可以使用 String 類的 replaceAll() 方法,該方法帶有 regex 和 replacement 兩個引數。此方法將用給定的替換值替換給定的正規表示式。在鏈函式的末尾,使用了 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