在 Java 中通過索引獲取字串中的字元
-
Java 中使用
charAt()
方法獲取字串字元 -
使用
String.valueOf()
方法將字元轉換為字串 - Java 中從字串獲取字元陣列
- 獲取 Unicode 補充多語言平面 (SMP) 的字元
- 總結
本教程介紹瞭如何在 Java 中通過索引獲取 String
字元,並列出了一些示例程式碼來理解該主題。
字串用於儲存字元序列。就像陣列一樣,字串也遵循從零開始的索引。這意味著字串的第一個字元被分配了一個索引值為零。我們可以使用它們的索引從字串中獲取單個字元。在本教程中,我們將學習如何做到這一點。
Java 中使用 charAt()
方法獲取字串字元
charAt()
方法將索引值作為引數並返回字串中該索引處的字元。它是從字串中獲取字元的最簡單方法,是一個 String
類方法。
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx1 = s.charAt(1); // character e
char characterAtIdx4 = s.charAt(4); // whitespace
char characterAtIdx5 = s.charAt(5); // character s
System.out.println("The string is: " + s);
System.out.println("Character at Index 1: " + characterAtIdx1);
System.out.println("Character at Index 4: " + characterAtIdx4);
System.out.println("Character at Index 5: " + characterAtIdx5);
}
}
輸出:
The string is: test string
Character at Index 1: e
Character at Index 4:
Character at Index 5: s
正如我們在上面的程式碼中看到的,這個方法的返回型別是 char。我們可以使用 Character
類的 toString()
方法將此字元型別轉換為字串,甚至可以使用 length()
方法獲取此字串的長度。
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx6 = s.charAt(6); // character t
String stringAtIdx6 = Character.toString(characterAtIdx6); // char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
輸出:
Length: 1
String: t
使用 String.valueOf()
方法將字元轉換為字串
從字串中獲取字元後,如果需要,我們可以使用 String.valueOf()
方法將字元轉換為字元。
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx6 = s.charAt(6); // character t
String stringAtIdx6 = String.valueOf(characterAtIdx6); // char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
輸出:
Length: 1
String: t
我們還可以將一個空字串連線到字元上以將其轉換為字串。中間沒有任何內容的引號表示空字串。這是在 Java 中獲取 String
物件的最簡單和隱式的方法之一。
public class Demo {
public static void main(String[] args) {
String s = "test string";
char characterAtIdx6 = s.charAt(6); // character t
String stringAtIdx6 = "" + characterAtIdx6; // char to string
System.out.println("Length: " + stringAtIdx6.length());
System.out.println("String: " + stringAtIdx6);
}
}
輸出:
Length: 1
String: t
Java 中從字串獲取字元陣列
我們可以藉助方括號通過索引獲取陣列元素。如果我們將字串轉換為字元型別陣列,我們可以從中獲取任何字元。
Java 提供了一個方便的 toCharArray()
方法,它返回一個字元陣列。我們可以在字串上使用這個方法併為它獲取一個字元陣列。
public class Demo {
public static void main(String[] args) {
String s = "test string";
char[] charArr = s.toCharArray();
System.out.println("The string is: " + s);
System.out.println("Character at Index 1: " + charArr[1]);
System.out.println("Character at Index 4: " + charArr[4]);
System.out.println("Character at Index 5: " + charArr[5]);
}
}
輸出:
The string is: test string
Character at Index 1: e
Character at Index 4:
Character at Index 5: s
我們可以使用上一節中描述的方法將字元轉換為字串。
public class Demo {
public static void main(String[] args) {
String s = "test string";
char[] charArr = s.toCharArray();
char characterAtIdx6 = charArr[6]; // character t
String str1 = Character.toString(characterAtIdx6); // char to string
String str2 = String.valueOf(characterAtIdx6); // char to string
String str3 = "" + characterAtIdx6; // char to string
System.out.println("Using toString()");
System.out.println("Length: " + str1.length() + " String: " + str1);
System.out.println("\nUsing valueOf()");
System.out.println("Length: " + str2.length() + " String: " + str2);
System.out.println("\nUsing empty string concatenation");
System.out.println("Length: " + str3.length() + " String: " + str3);
}
}
輸出:
Using toString()
Length: 1 String: t
Using valueOf()
Length: 1 String: t
Using empty string concatenation
Length: 1 String: t
獲取 Unicode 補充多語言平面 (SMP) 的字元
在極少數情況下,我們的字串可能包含基本 Unicode 多語言平面中不存在的字元。一個例子可能是一串表情符號或表情符號。這些字元是 Unicode 補充多語言平面 (SMP) 的一部分。
上述方法不適用於這些字元。我們可以使用 codePointAt()
方法從字串中獲取此類字元。此方法返回一個整數,表示該索引處字元的 Unicode 值。確保你安裝了適當的字型來檢視這些字元。
public class Demo
{
public static void main(String[] args)
{
String s = "😀 the grinning emoji";
for(int i=0; i<s.length();)
{
int codePoint = s.codePointAt(i);
char[] charArr = Character.toChars(codePoint);//More than one characters may be required to represent an SMP char
System.out.print(new String(charArr) + " ");
i = i + Character.charCount(codePoint);//Increase i according to the number of chars required for that SMP char
}
}
}
輸出:
😀 t h e g r i n n i n g e m o j i
如果我們嘗試使用 charAt()
方法列印相同的字串,我們會得到以下輸出。
public class Demo
{
public static void main(String args[])
{
String s = "😀 the grinning emoji";
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
System.out.print(c + " ");
}
}
}
輸出:
? ? t h e g r i n n i n g e m o j i
總結
字串,就像陣列一樣,遵循從零開始的索引。我們可以使用 charAt()
方法從字串中獲取單個字元。我們還可以將字串轉換為字元陣列,然後使用它們的索引獲取單個字元。如果你希望單個字元作為字串而不是字元,則使用 Character.toString()
或 String.valueOf()
方法來轉換它。有時我們的字串可能包含基本多語言平面之外的字元。在這種情況下,我們可以使用 codePointAt()
方法而不是 charAt()
方法。