Menu
CoddyTech

文字列変換

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 に変換します。

challenge icon

チャレンジ

簡単

convert_and_printという名前の関数を作成し、次の3つの引数を受け取るようにします。

  1. 文字列スライス s: &str。これはテキストで表した数値です(例:"123.67")。to_stringがfalseの場合にのみ使用します。
  2. 浮動小数点数 n: f64。to_stringがtrueの場合にのみ使用します。
  3. 真偽値 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. 1回目は、to_stringをfalseに設定して呼び出します。文字列sを使用し、nは無視します。
  2. 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 を呼び出してください
    
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rustオンラインコンパイラ