UTF-8 และอักขระ
การจัดการ Unicode
UTF-8 และอักขระ เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
สตริงของ Rust เป็น UTF-8
String และ &str ทุกค่าของ Rust เข้ารหัสเป็น UTF-8 ซึ่งหมายความว่าข้อความสามารถมีอักขระ Unicode ใด ๆ ก็ได้ ไม่ใช่แค่ ASCII
fn main() {
let s = String::from("caf\u{e9}");
println!("{}", s);
}UTF-8 คืออะไร
UTF-8 เข้ารหัสอักขระ Unicode แต่ละตัวด้วยไบต์หนึ่งถึงสี่ไบต์ อักขระ ASCII ใช้หนึ่งไบต์ ส่วนตัวอักษรที่มีเครื่องหมายกำกับและอีโมจิใช้ไบต์มากกว่า
fn main() {
let ascii = "A"; // 1 byte
let accent = "\u{e9}"; // 2 bytes (e-acute)
println!("{} bytes vs {} bytes", ascii.len(), accent.len());
}ไบต์เทียบกับอักขระ
เนื่องจากการเข้ารหัสแบบหลายไบต์ len() จึงคืนค่าจำนวนไบต์ ขณะที่จำนวนอักขระอาจน้อยกว่า
fn main() {
let s = "caf\u{e9}";
println!("bytes {}", s.len());
println!("chars {}", s.chars().count());
}ชนิด char คือ Unicode
char ของ Rust เป็นค่าขนาด 4 ไบต์ที่เก็บค่า Unicode scalar ใด ๆ ได้ ซึ่งมากกว่าการเก็บไบต์เดียวอย่างมาก
fn main() {
let letter = 'Z';
let accented = '\u{f1}'; // n with tilde
println!("{} {}", letter, accented);
}การวนซ้ำอักขระ
ใช้ chars() เพื่อไล่ดูข้อความทีละอักขระ วิธีนี้จัดการอักขระหลายไบต์ได้อย่างถูกต้อง
fn main() {
let s = "a\u{e9}z";
for c in s.chars() {
println!("{}", c);
}
}เหตุใดจึงใช้ดัชนีตัวเลขไม่ได้
Rust ไม่อนุญาตให้ใช้ s[0] กับสตริง เนื่องจากอักขระมีขนาดเป็นไบต์ไม่เท่ากัน การใช้ตัวเลขเดียวเป็นดัชนีจึงกำกวมและไม่ปลอดภัย
fn main() {
let s = "hello";
// let c = s[0]; // error: cannot index a str
let first = s.chars().next().unwrap();
println!("{}", first);
}การรับอักขระลำดับที่ nth
ใช้เมธอดของตัววนซ้ำ nth เพื่อดึงอักขระตามตำแหน่ง เมธอดนี้คืนค่าเป็น Option
fn main() {
let s = "abcdef";
let third = s.chars().nth(2);
println!("{:?}", third);
}การวนซ้ำไบต์
เมื่อคุณต้องการไบต์ดิบจริง ๆ ให้ใช้ bytes() ซึ่งให้ค่า u8
fn main() {
let s = "AB";
for b in s.bytes() {
println!("{}", b);
}
}การสไลซ์ตามขอบเขตไบต์
สไลซ์สตริงใช้ดัชนีไบต์ การสไลซ์ต้องลงท้ายที่ขอบเขตอักขระที่ถูกต้อง มิฉะนั้นโปรแกรมจะตื่นตระหนก
fn main() {
let s = "hello";
let part = &s[0..3]; // valid ASCII boundary
println!("{}", part);
}เมธอดของ char
ชนิด char มีเมธอดที่มีประโยชน์ เช่น is_alphabetic, is_numeric และ to_uppercase
fn main() {
let c = 'k';
println!("alpha {} numeric {}", c.is_alphabetic(), c.is_numeric());
println!("upper {}", c.to_uppercase());
}การนับอักขระเฉพาะ
ใช้ chars ร่วมกับ filter เพื่อนับอักขระที่ตรงตามเงื่อนไข
fn main() {
let s = "banana";
let a_count = s.chars().filter(|&c| c == 'a').count();
println!("a appears {} times", a_count);
}ตรวจสอบอย่างรวดเร็ว
ทบทวนว่าเหตุใดความยาวสตริงจึงอาจทำให้ประหลาดใจ
สรุปทบทวน
UTF-8 และ chars ใน Rust:
- สตริงเป็น UTF-8 อักขระใช้ไบต์ตั้งแต่ 1 ถึง 4 ไบต์
len()ให้จำนวนไบต์ ส่วนchars().count()ให้จำนวนอักขระ- คุณไม่สามารถใช้ตัวเลขเป็นดัชนีของสตริงได้ ให้ใช้
chars()หรือnth - สไลซ์ต้องอยู่บนขอบเขตอักขระ
fn main() {
let s = "sm\u{ee}le";
println!("bytes {} chars {}", s.len(), s.chars().count());
for c in s.chars() {
print!("{} ", c);
}
println!();
}คำถามที่พบบ่อย
บทเรียน “UTF-8 และอักขระ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “UTF-8 และอักขระ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “UTF-8 และอักขระ”
การจัดการ Unicode คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “UTF-8 และอักขระ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม
ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- String เทียบกับ &str
- สไลซ์
- เมธอดของสตริง
- UTF-8 และอักขระ