Menu
Coddy logo textTech

String Dönüştürme

Coddy'nin Rust Journey'sinin Fundamentals bölümünün bir parçası — ders 71 / 75.

Sayısal bir türü dizeye dönüştürmek için to_string() yöntemini kullanabilirsiniz. Bu yöntem, tam sayılar ve kayan noktalı sayılar dahil olmak üzere çoğu veri türü için mevcuttur.

Örneğin:

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

Bu örnekte, bir i32 değişkeni olan number'ı bir String'e dönüştürüyoruz.

Bir dizeyi sayısal bir türe dönüştürmek için parse() metodunu kullanabilirsiniz. Bu metot, ayrıştırılmış sayıyı veya dönüştürme başarısız olursa bir hatayı içeren bir sonuç döndürür.

Örneğin:

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

Bu örnekte, number_str dizesini parse() metodunu kullanarak bir i32 türüne dönüştürüyoruz. unwrap() metodu, dönüşümün başarılı olduğunu varsayarak Result içerisinden değeri çıkarmak için kullanılır.

Dönüştürme başarısız olursa, program panikleyecektir (hata verecektir).

parse() fonksiyonunu farklı sayısal türlerle de kullanabilirsiniz:

let float_str = "3.14";
let float_num: f64 = float_str.parse().unwrap();
println!("The number as an f64: {}", float_num);

Bu durumda, float_str dizesini bir f64 türüne dönüştürüyoruz.

challenge icon

Görev

Kolay

Üç argüman alan convert_and_print adında bir fonksiyon oluşturun:

  1. Bir string dilimi s: &str — bu, metin olarak yazılmış bir sayıdır (örneğin "123.67"). Sadece to_string değeri false olduğunda kullanılır.
  2. Bir float n: f64 — ondalıklı bir sayı. Sadece to_string değeri true olduğunda kullanılır.
  3. Bir boolean to_string: bool — hangi işlemin gerçekleştirileceğini belirler.

Fonksiyon aşağıdaki işlemleri gerçekleştirmelidir:

  • Eğer to_string değeri true ise: n sayısını .to_string() kullanarak bir string'e dönüştürün, ardından kaç tane rakam karakteri içerdiğini sayın (nokta . veya eksi işaretini - saymayın). Şu formatta yazdırın:
    Number: [string], Digits: [num of digits]

    Örneğin, eğer n = -321.198623 ise, string hali "-321.198623" olur ve bu 9 rakam karakteri içerir (- ve . hariç).

    İpucu: n sayısını bir string'e dönüştürün, ardından üzerinde .len() kullanın ve içerdiği her . veya - için 1 çıkarın.
  • Eğer to_string değeri false ise: s string'ini .parse() kullanarak bir f64 olarak ayrıştırın, ardından onu i32 tipine dönüştürün (bu işlem ondalık kısmı atar). Şu formatta yazdırın:
    String as number: [number]

    Örneğin, eğer s = "123.67231" ise, çıktı String as number: 123 olur.

convert_and_print fonksiyonunu iki kez çağırın:

  1. İlk olarak, to_string değeri false olarak ayarlanmış şekilde — bu s string'ini kullanır ve n değerini görmezden gelir.
  2. İkinci olarak, to_string değeri true olarak ayarlanmış şekilde — bu n sayısını kullanır ve s değerini görmezden gelir.

Kopya kağıdı

Sayısal bir türü dizeye (string) dönüştürmek için to_string() metodunu kullanın:

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

Bir dizeyi (string) sayısal bir türe dönüştürmek için parse() metodunu kullanın:

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

parse() metodu farklı sayısal türlerle çalışır:

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

unwrap() metodu, değeri Result içerisinden çıkarır. Dönüştürme başarısız olursa program panikler (panic).

Kendin dene

use std::io;

fn convert_and_print(s: &str, n: f64, to_string: bool) {
    // Kodunuzu buraya yazın
}

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 ile convert_and_print fonksiyonunu çağırın
    
    
    // to_string = true ile convert_and_print fonksiyonunu çağırın
    
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Fundamentals bölümündeki tüm dersler