Menu
Coddy logo textTech

文字列変換

CoddyのRustジャーニー「基礎」セクションの一部。レッスン 71/75。

数値型を文字列に変換するには、to_string()メソッドを使用できます。このメソッドは、整数や浮動小数点数を含む、ほとんどのデータ型で利用できます。

例:

let number = 42;
let number_str = number.to_string();
println!("The number as a string: {}", number_str);

この例では、i32 変数 numberString に変換しています。

文字列を数値型に変換するには、parse()メソッドを使用できます。このメソッドは、解析された数値、または変換に失敗した場合はエラーのいずれかを含む結果を返します。

例:

let number_str = "123";
let number: i32 = number_str.parse().unwrap();
println!("The number as an i32: {}", number);

この例では、parse()メソッドを使用して文字列number_stri32に変換しています。変換が成功することを前提に、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_strf64 に変換しています。

challenge icon

チャレンジ

簡単

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

  1. 文字列スライス s: &str。これはテキストとして記述された数値です(例:"123.67")。to_stringfalseの場合にのみ使用します。
  2. 浮動小数点数 n: f64:浮動小数点数です。to_stringtrueの場合にのみ使用します。
  3. ブール値 to_string: bool:実行する操作を決定します。

関数では、次の操作を実行します。

  • to_stringtrueの場合:.to_string()を使用してnを文字列に変換し、その文字列に含まれる数字の文字数を数えます(ドット.やマイナス記号-数えません)。次の形式で出力します:
    Number: [string], Digits: [num of digits]

    たとえば、n = -321.198623の場合、文字列形式は"-321.198623"で、数字の文字は9個あります(-.は数えません)。

    ヒント:nを文字列に変換し、その文字列に対して.len()を使用して、含まれている.または-ごとに1を引きます。
  • to_stringfalseの場合:.parse()を使用して文字列sf64として解析し、それをi32にキャストします(小数部分は切り捨てられます)。次の形式で出力します:
    String as number: [number]

    たとえば、s = "123.67231"の場合、出力はString as number: 123です。

convert_and_printを2回呼び出します。

  1. 1回目は、to_stringfalseに設定して呼び出します。これにより文字列sが使用され、nは無視されます。
  2. 2回目は、to_stringtrueに設定して呼び出します。これにより数値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 で呼び出してください
    
}
quiz icon腕試し

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

基礎のすべてのレッスン

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