Menu
Coddy logo textTech

המרת מחרוזות

חלק מהיחידה יסודות במסלול ה-Rust של Coddy. שיעור 71 מתוך 75.

כדי להמיר טיפוס מספרי למחרוזת, אפשר להשתמש במתודה to_string(). המתודה הזו זמינה עבור רוב סוגי הנתונים, כולל מספרים שלמים ומספרים בנקודה צפה.

לדוגמה:

let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);

בדוגמה הזו, אנחנו ממירים משתנה מסוג i32 בשם number ל-String.

כדי להמיר מחרוזת לסוג מספרי, אפשר להשתמש בשיטה parse(). שיטה זו מחזירה תוצאה שמכילה את המספר שפוענח או שגיאה אם ההמרה נכשלת.

לדוגמה:

let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);

בדוגמה הזו, אנחנו ממירים מחרוזת number_str ל־i32 באמצעות המתודה parse(). המתודה unwrap() משמשת לחילוץ הערך מתוך Result, בהנחה שההמרה מצליחה.

אם ההמרה נכשלת, התוכנית תיכנס לפאניקה (תיכשל).

אפשר גם להשתמש ב-parse() עם סוגים מספריים שונים:

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);

במקרה הזה, אנחנו ממירים מחרוזת float_str ל־f64.

challenge icon

אתגר

קל

צור פונקציה בשם convert_and_print שמקבלת שלושה ארגומנטים:

  1. פרוסת מחרוזת s: &str. זהו מספר הכתוב כטקסט (למשל "123.67"). משתמשים בה רק כאשר to_string הוא false.
  2. מספר ממשי n: f64: מספר בנקודה צפה. משתמשים בו רק כאשר to_string הוא true.
  3. ערך בוליאני to_string: bool: קובע איזו פעולה לבצע.

הפונקציה צריכה לבצע את הפעולות הבאות:

  • אם to_string הוא true: המר את n למחרוזת באמצעות .to_string(), ואז ספור כמה תווי ספרות יש בה (אל תספור את הנקודה . או את סימן המינוס -). הדפס בפורמט:
    Number: [string], Digits: [num of digits]

    לדוגמה, אם n = -321.198623, צורת המחרוזת שלו היא "-321.198623", ובה 9 תווי ספרות (לא כולל - ו-.).

    רמז: המר את n למחרוזת, ואז השתמש ב-.len() עליה והפחת 1 עבור כל . או - שהיא מכילה.
  • אם to_string הוא false: נתח את המחרוזת s כ-f64 באמצעות .parse(), ואז המר אותה ל-i32 (פעולה שמשמיטה את החלק העשרוני). הדפס בפורמט:
    String as number: [number]

    לדוגמה, אם s = "123.67231", הפלט הוא String as number: 123.

קרא ל-convert_and_print פעמיים:

  1. ראשית, כאשר to_string מוגדר ל-false. כך נעשה שימוש במחרוזת s ומתעלמים מ-n.
  2. שנית, כאשר to_string מוגדר ל-true. כך נעשה שימוש במספר n ומתעלמים מ-s.

נסו בעצמכם

use std::io;

fn convert_and_print(s: &str, n: f64, to_string: bool) {
    // כתבו כאן את הקוד שלכם
}

fn main() {
    let mut input_number_str = String::new();
    let mut input_n = String::new();

    io::stdin().read_line(&mut input_number_str).unwrap();
    io::stdin().read_line(&mut input_n).unwrap();

    let n: f64 = input_n.trim().parse().unwrap();
    let number_str = input_number_str.trim();

    // קראו ל-convert_and_print עם to_string = false
    
    
    // קראו ל-convert_and_print עם to_string = true
    
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Rust אונליין