สตริงและ &str
ข้อความที่มีเจ้าของและข้อความที่ยืมมา
สตริงและ &str เป็นบทเรียน Learn Rust Coding ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn Rust Coding และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
ประเภท String สองแบบ
Rust มีประเภทข้อความหลักสองแบบ:
String— สตริงที่มีความเป็นเจ้าของและขยายขนาดได้&str— ส่วนย่อยของสตริงที่ยืมมา ซึ่งเป็นมุมมองของข้อความ
fn main() {
let owned: String = String::from("hello");
let borrowed: &str = "world";
println!("{} {}", owned, borrowed);
}ลิเทอรัลสตริงคือ &str
เมื่อเขียนข้อความภายในเครื่องหมายอัญประกาศคู่ คุณจะได้ &str ซึ่งมีขนาดคงที่และจัดเก็บอยู่ในไบนารีของโปรแกรม
fn main() {
let greeting = "Hi there"; // type is &str
println!("{}", greeting);
}การสร้าง String
สร้าง String ที่มีความเป็นเจ้าของด้วย String::from หรือเมธอด .to_string()
fn main() {
let a = String::from("abc");
let b = "xyz".to_string();
println!("{} {}", a, b);
}การขยาย String
เนื่องจาก String มีความเป็นเจ้าของและขยายขนาดได้ คุณจึงเพิ่มข้อความต่อท้ายด้วย push_str และ push ได้
fn main() {
let mut s = String::from("Hello");
s.push_str(", ");
s.push_str("Rust");
s.push('!');
println!("{}", s);
}การต่อสตริง
รวมสตริงด้วยตัวดำเนินการ + หรือมาโคร format! โดย format! จะไม่ใช้ค่าที่ป้อนจนหมด
fn main() {
let first = String::from("Hello");
let second = String::from("World");
let joined = format!("{} {}", first, second);
println!("{}", joined);
}การยืม String เป็น &str
String สามารถถูกยืมเป็น &str ได้โดยอัตโนมัติ ทำให้ฟังก์ชันรับค่าได้ทั้งสองประเภท
fn print_text(text: &str) {
println!("text: {}", text);
}
fn main() {
let owned = String::from("owned");
print_text(&owned);
print_text("literal");
}เหตุผลที่ควรใช้พารามิเตอร์ &str
โดยทั่วไปฟังก์ชันจะรับ &str แทน String เพราะยืดหยุ่นกว่า ผู้เรียกสามารถส่งสตริงที่มีความเป็นเจ้าของ ลิเทอรัล หรือส่วนย่อยของสตริงได้
fn shout(s: &str) -> String {
s.to_uppercase()
}
fn main() {
println!("{}", shout("quiet"));
}ความยาวเป็นไบต์
เมธอด len() จะส่งกลับความยาวเป็น ไบต์ ไม่ใช่จำนวนอักขระ ข้อความ ASCII ใช้หนึ่งไบต์ต่อหนึ่งอักขระ
fn main() {
let s = "hello";
println!("{} bytes", s.len());
}การตรวจสอบเนื้อหา
เมธอดสำหรับอ่านที่มีประโยชน์ ได้แก่ contains, starts_with และ is_empty
fn main() {
let s = "hello world";
println!("{}", s.contains("world"));
println!("{}", s.starts_with("hello"));
}ความแตกต่างด้านความเป็นเจ้าของ
String เป็นเจ้าของข้อมูลบนฮีปและรับผิดชอบการคืนพื้นที่ ส่วน &str เพียงยืมข้อมูลที่มีอยู่และไม่ได้เป็นเจ้าของสิ่งใด
fn main() {
let owned = String::from("data");
let view: &str = &owned[0..2];
println!("owned {} view {}", owned, view);
}การแปลงระหว่างสองประเภท
แปลงไปมาระหว่างสองประเภทได้ดังนี้:
&strเป็นString:.to_string()หรือString::fromStringเป็น&str:&sหรือs.as_str()
fn main() {
let s = String::from("convert");
let slice: &str = s.as_str();
let back: String = slice.to_string();
println!("{} {}", slice, back);
}ตรวจสอบความเข้าใจ
ทบทวนความแตกต่างระหว่างประเภทข้อความทั้งสอง
สรุปทบทวน
สตริงใน Rust:
String— มีความเป็นเจ้าของ ขยายขนาดได้ และจัดสรรบนฮีป&str— ส่วนย่อยหรือมุมมองที่ยืมมา ซึ่งเป็นรูปแบบของลิเทอรัล- สร้างด้วย
String::fromหรือto_string()และขยายด้วยpush_str - ควรใช้
&strสำหรับพารามิเตอร์ของฟังก์ชัน
fn main() {
let mut msg = String::from("Rust");
msg.push_str(" rocks");
let view: &str = &msg;
println!("{} ({} bytes)", view, view.len());
}คำถามที่พบบ่อย
บทเรียน “สตริงและ &str” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สตริงและ &str” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn Rust Coding ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn Rust Coding มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สตริงและ &str”
ข้อความที่มีเจ้าของและข้อความที่ยืมมา คุณปฏิบัติ Learn Rust Coding ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn Rust Coding หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn Rust Coding บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “สตริงและ &str” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn Rust Coding นี้ได้ไหม
ได้ บทเรียน Learn Rust Coding ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เวกเตอร์
- สตริงและ &str
- HashMaps
- การวนซ้ำผ่านคอลเลกชัน