在 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
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 中以十六進位制字串轉換位元組陣列
- 如何在 Java 中執行字串到字串陣列的轉換
- 如何將 Java 字串轉換為位元組
- 如何從 Java 中的字串中刪除子字串
- 用 Java 生成隨機字串
- Java 中的交換方法