บทนำ
ในบทความนี้ เราจะเรียนรู้วิธีการวนลูป (Iterate) เข้าถึงทุกตัวอักษร (Character) ในสตริง สตริงเป็นชนิดข้อมูลที่ประกอบด้วยตัวอักษรหนึ่งตัวขึ้นไป และล้อมรอบด้วยเครื่องหมายคำพูดคู่ (" ") Char เป็นชนิดข้อมูลที่ประกอบด้วยอักขระหรือตัวเลขหรืออักขระพิเศษ
ตัวอย่างการทำงาน
อินพุทตัวอย่าง:
The string is defined as: Java Program
เอาต์พุทที่คาดหวัง:
The characters in the string are: J, a, v, a, , P, r, o, g, r, a, m,
อัลกอริทึม
ขั้นตอนที่ 1 - เริ่มต้น ขั้นตอนที่ 2 - ประกาศสตริงชื่อ input_string และตัวอักษรชื่อ temp ขั้นตอนที่ 3 - กำหนดค่า ขั้นตอนที่ 4 - วนลูปผ่านสตริง พิมพ์ตัวอักษรที่ดัชนี 'i' พร้อมช่องว่าง ขั้นตอนที่ 5 - แสดงผลลัพธ์ ขั้นตอนที่ 6 - จบการทำงาน
ตัวอย่างที่ 1: ใช้ for-loop แบบดัชนี
public class Characters {
public static void main(String[] args) {
String input_string = "Java Program";
System.out.println("The string is defined as: " + input_string);
System.out.println("The characters in the string are: ");
for(int i = 0; i < input_string.length(); i++) {
char temp = input_string.charAt(i);
System.out.print(temp + ", ");
}
}
}
เอาต์พุท
The string is defined as: Java Program The characters in the string are: J, a, v, a, , P, r, o, g, r, a, m,
ตัวอย่างที่ 2: ใช้ for-each loop กับ toCharArray()
public class Main {
public static void main(String[] args) {
String input_string = "Java Program";
System.out.println("The string is defined as: " + input_string);
System.out.println("The characters in the string are: ");
for(char temp : input_string.toCharArray()) {
System.out.print(temp + ", ");
}
}
}
เอาต์พุท
The string is defined as: Java Program The characters in the string are: J, a, v, a, , P, r, o, g, r, a, m,
วิธีอื่นๆ (Java 8+):
// ใช้ Stream API
input_string.chars().forEach(c -> System.out.print((char)c + ", "));
// หรือ
input_string.codePoints().forEach(c -> System.out.print(Character.toChars(c) + ", "));
// ใช้ String.split("") (แยกทุกตัวอักษร)
Arrays.stream(input_string.split("")).forEach(c -> System.out.print(c + ", "));
หมายเหตุ: toCharArray() สร้างอาร์เรย์ใหม่ (copy) ในขณะที่ charAt() เข้าถึงโดยตรง สำหรับสตริงยาว ใช้ charAt() จะประหยัดหน่วยความจำกว่า