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

Rashmi Patidar 2023年1月30日 2021年4月29日
  1. 使用 replaceAll() 方法將字串轉換為整數陣列
  2. 使用 Java 8 流庫將字串轉換為 Int 陣列
  3. 使用 StringTokenizer 和函式將字串轉換為整數陣列
在 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
Rashmi Patidar avatar Rashmi Patidar avatar

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 Array