המרת מחרוזות
חלק מהיחידה יסודות במסלול ה-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.
אתגר
קלצור פונקציה בשם convert_and_print שמקבלת שלושה ארגומנטים:
- פרוסת מחרוזת
s: &str. זהו מספר הכתוב כטקסט (למשל"123.67"). משתמשים בה רק כאשרto_stringהואfalse. - מספר ממשי
n: f64: מספר בנקודה צפה. משתמשים בו רק כאשרto_stringהואtrue. - ערך בוליאני
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 פעמיים:
- ראשית, כאשר
to_stringמוגדר ל-false. כך נעשה שימוש במחרוזתsומתעלמים מ-n. - שנית, כאשר
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
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3תרגלו בעצמכם: קומפיילר Rust אונליין