在 Java 中將字串拆分為 int 數組
1.概述
在許多程式設計任務中,我們經常以字串形式取得資料。資料來源可以是使用者輸入,也可以是文件中的內容。在進行計算和比較操作時,我們需要將字串值轉換為數字類型。
在本教程中,我們將了解如何使用 Java 的分割和儲存操作來變更文字類型。具體來說,我們將把一串逗號分隔的數字轉換為整數陣列。
2. 理解問題
根據定義, Java 中的字串是字元序列。此外,字串是java.lang.String類別的物件。該類別有許多處理字串的方法。
讓我們舉一個用例範例:
String input = "10, 20, 30, 40, 50";
在上面的例子中,我們有一個包含數字列表的字串。這些數字用逗號分隔。要注意的是,這裡的10是一個字串,而不是整數。因此,我們不能直接在任何算術運算中使用它。
因此,我們將此字串拆分成單一元素。然後將它們轉換為整數,以便在數組中使用。
3.實際實施
讓我們舉一個例子來看看如何拆分字串並將其儲存在int類型陣列中:
@Test
void givenCommaSeparatedString_whenConvert_thenReturnIntArray() {
int[] result = converter.convert("10, 20, 30, 40, 50", ",");
assertThat(result).containsExactly(10, 20, 30, 40, 50);
}
在上面的測試程式碼中,我們使用了convert()方法。它接受一個逗號分隔的字串。
讓我們看看convert()方法是如何運作的。在這個方法中,我們使用split(“,”)方法在逗號出現的地方分割文字:
["10", " 20", " 30", " 40", " 50"]
結果,我們得到了一個整數陣列。該陣列現在儲存了字串numbers的值,中間不帶逗號。值得注意的是,除了第一個數字外,上述字串的前導仍有空格。
在下一步中,我們修剪每個元素以清除任何前導或尾隨空格。
最後將結果陣列放入一個Int類型陣列中,透過測試程式碼可以看到結果陣列與預期的整數相符。
4. 使用不同的分隔符
同樣的邏輯也適用於其他分隔符號。我們現在舉一個使用分號的例子:
@Test
void givenSemicolonSeparatedString_whenConvert_thenReturnIntArray() {
int[] result = converter.convert("10; 20; 30; 40; 50", ";");
assertThat(result).containsExactly(10, 20, 30, 40, 50);
}
在這種情況下,我們只是將符號從逗號更改為分號。但是,我們得到相同的輸出。
值得注意的是,當使用正規表示式字元時,我們應該轉義某些字元。
讓我們舉一個使用正規表示式|管道字元的用例:
@Test
void givenPipeSeparatedString_whenConvert_thenReturnIntArray() {
int[] result = converter.convert("10|20|30|40|50", "\\|");
assertThat(result).containsExactly(10, 20, 30, 40, 50);
}
同樣,我們得到了相同的結果。因此,根據經驗法則,我們使用 \\ 反斜線對正規表示式字元進行轉義。對於多個分隔符, split()方法會將它們全部組合成一個模式。
5. 結論
在本文中,我們了解如何使用split()方法拆分字串。然後,我們將其轉換為int數組。首先,我們看了一個使用簡單分隔符號(例如逗號和分號)的範例。然後,我們使用了帶有反斜線轉義符的正規表示式字元。
我們可以將相同的方法應用於其他用例:
- 讀取使用者輸入
- 從檔案讀取數據
- 處理大型數值資料集
透過調整分隔符,我們可以使用相同的方法輕鬆處理多種資料類型。
與往常一樣,範例的完整程式碼可在 GitHub 上找到。