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