0Pricing
Learn Rust Coding · บทเรียน

สตริงและ &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::from
  • String เป็น &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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เวกเตอร์
  2. สตริงและ &str
  3. HashMaps
  4. การวนซ้ำผ่านคอลเลกชัน
← กลับไปที่ Learn Rust Coding