在Java中將String轉換為char
一、概述
String
是一種常見的類型,而char
是 Java 中的基本類型。
在本教程中,我們將探討如何在 Java 中將String
對象轉換為char
。
2. 問題介紹
我們知道一個char
只能包含一個字符。但是,一個String
對象可以包含多個字符。
因此,我們的教程將涵蓋兩種情況:
- 源是一個單字符串。
- 源是一個多字符串。
對於案例 1,我們可以輕鬆地將單個字符作為char
獲取。例如,假設這是我們的輸入:
String STRING_b = "b";
轉換後,我們期望有一個 char ' b
'。
對於情況 2,如果源String
是一個多字符的字符串,並且我們仍然希望得到一個單個char
作為結果,我們必須分析選擇所需字符的需求,例如第一個、最後一個或 n-第一個字符。
在本教程中,我們將介紹一個更通用的解決方案。我們將源String
轉換為一個char
數組,該數組包含字符串中的每個字符。這樣,我們可以根據需要選擇任何元素。
我們將使用STRING_Baeldung
作為輸入示例:
String STRING_Baeldung = "Baeldung";
那麼接下來,讓我們看看他們的行動。
3. 單字符串
Java 的String
類提供charAt()
) 從輸入字符串中獲取第 n 個字符(從 0 開始)作為**char** .
因此,我們可以直接調用getChar(0)
方法將單個字符String
轉換為char
:
assertEquals('b', STRING_b.charAt(0));
但是,我們應該注意,如果輸入是空字符串,則charAt()
方法調用會拋出StringIndexOutOfBoundsException
:
assertThrows(StringIndexOutOfBoundsException.class, () -> "".charAt(0));
因此,在調用charAt()
方法之前,我們應該檢查輸入字符串是否為空或空。
4. 多字符串
我們已經學會了使用charAt(0)
將單個字符String
轉換為char
。如果輸入是一個多字符的String
,並且我們確切地知道我們想要將哪個字符轉換為char
,我們仍然可以使用charAt()
方法。例如,我們可以從輸入字符串“ Baeldung
”中獲取第四個字符(' l
'):
assertEquals('l', STRING_Baeldung.charAt(3));
此外,我們可以使用String.toCharArray()
來獲取包含所有字符的char[]
數組:
assertArrayEquals(new char[] { 'B', 'a', 'e', 'l', 'd', 'u', 'n', 'g' }, STRING_Baeldung.toCharArray());
值得一提的是toCharArray()
方法也適用於空字符串輸入。它返回一個空char
數組作為結果:
assertArrayEquals(new char[] {}, "".toCharArray());
除了toCharArray()
, String.getChars( String.getChars()
可以從給定的String
中提取連續的字符到一個char
數組中。該方法接收四個參數:
-
srcBegin
- 字符串中第一個字符的索引,包括在內 -
srcEnd
– 要復制的字符串中最後一個字符的索引,不包含 -
dst
- 目標數組,這是我們的結果 -
dstBegin
– 目標數組中的起始偏移量。我們將通過一個例子來討論這個問題。
首先,讓我們從字符串“ Baeldung
”中提取“ aeld
”並將其填充到預定義的char
數組中:
char[] aeld = new char[4];
STRING_Baeldung.getChars(1, 5, aeld, 0);
assertArrayEquals(new char[] { 'a', 'e', 'l', 'd' }, aeld);
如上面的測試所示,要調用getChars()
,我們首先應該有一個char
數組來保存結果。
在示例中,當我們調用getChars()
時,我們將0
傳遞給dstBegin
。這是因為我們希望轉換後的結果從數組aeld
中的第一個元素開始。
當然,有時,我們希望結果覆蓋數組的中間部分。然後我們可以將dstBegin
設置為所需的值。
接下來,讓我們看另一個將“ aeld
”轉換為字符並從第二個(索引=1)元素覆蓋目標數組的示例:
char[] anotherArray = new char[] { '#', '#', '#', '#', '#', '#' };
STRING_Baeldung.getChars(1, 5, anotherArray, 1);
assertArrayEquals(new char[] { '#', 'a', 'e', 'l', 'd', '#' }, anotherArray);
因此,正如我們所見,我們將dstBegin=1
傳遞給該方法並獲得預期的結果。
5. 結論
在本文中,我們學習瞭如何在 Java 中將String
轉換為char
。
與往常一樣,本文中使用的代碼可在 GitHub 上獲得。