Menu
CoddyTech

המרת מחרוזות

חלק מהיחידה יסודות במסלול ה-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 אונליין