文字列変換
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();
// convert_and_print を to_string = false で呼び出してください
// convert_and_print を to_string = true で呼び出してください
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rustオンラインコンパイラ