Menu
Coddy logo textTech

文字列変換

CoddyのRustジャーニー「Fundamentals」セクションの一部 — レッスン 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

チャレンジ

簡単

3つの引数を受け取る convert_and_print という名前の関数を作成してください:

  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 を無視します。

チートシート

数値型を文字列に変換するには、to_string()メソッドを使用します:

let number = 42;
let number_str = number.to_string();

文字列を数値型に変換するには、parse()メソッドを使用します:

let number_str = "123";
let number: i32 = number_str.parse().unwrap();

parse()メソッドは、さまざまな数値型で使用できます:

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();

unwrap()メソッドは、Resultから値を取り出します。変換に失敗した場合、プログラムはパニックを起こします。

自分で試してみよう

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腕試し

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

Fundamentalsのすべてのレッスン