文字列変換
CoddyのRustジャーニー「基礎」セクションの一部。レッスン 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);この例では、parse()メソッドを使って文字列number_strをi32に変換しています。変換が成功することを前提として、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という名前の関数を作成し、次の3つの引数を受け取るようにします。
- 文字列スライス
s: &str。これはテキストで表した数値です(例:"123.67")。to_stringがfalseの場合にのみ使用します。 - 浮動小数点数
n: f64。to_stringがtrueの場合にのみ使用します。 - 真偽値
to_string: bool。実行する操作を決定します。
関数では次の操作を実行します。
to_stringがtrueの場合:.to_string()を使ってnを文字列に変換し、含まれる数字の文字数を数えます(ドット.やマイナス記号-は数えません)。次の形式で出力します。Number: [string], Digits: [num of digits]
たとえば、n = -321.198623の場合、文字列表現は"-321.198623"で、数字の文字は9文字です(-と.は数えません)。
ヒント:nを文字列に変換し、.len()を使って文字数を数え、含まれる.または-ごとに1を引きます。to_stringがfalseの場合:.parse()を使って文字列sをf64として解析し、i32にキャストします(小数部分は切り捨てられます)。次の形式で出力します。String as number: [number]
たとえば、s = "123.67231"の場合、出力はString as number: 123です。
convert_and_printを2回呼び出します。
- 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();
// to_string = false を指定して convert_and_print を呼び出してください
// to_string = true を指定して convert_and_print を呼び出してください
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ