CodeBlanks Logo Icon CodeBlanks

chars ve bytes

chars ve bytes iteratörleriyle string'i parçalara ayırırsın.

chars ve bytes

Rust metinleri UTF-8 olarak saklar. Türkçe harfler (ç, ğ, ı, ö, ş, ü) iki bayt yer kaplar. Bu yüzden len() bayt sayısını, chars().count() karakter sayısını verir:

let s = "çay";
println!("{} {}", s.len(), s.chars().count());   // 4 3
for b in s.bytes() { print!("{b} "); }           // 195 167 97 121

Metni karakter karakter işlemek için chars() kullan; bayt düzeyi yalnızca ikili protokoller ve ASCII işlemleri içindir.

char türü

char 4 baytlık bir Unicode skaler değeridir; tek tırnakla yazılır. Kullanışlı yöntemleri vardır:

let c = 'ğ';
println!("{}", c.is_alphabetic());          // true
println!("{}", '7'.to_digit(10).unwrap());  // 7
println!("{}", 'a'.to_ascii_uppercase());   // A
let ters: String = "abc".chars().rev().collect();   // "cba"

to_uppercase() tek bir karakter değil bir yineleyici döndürür, çünkü bazı harflerin büyük hali birden fazla karakterdir (ß → SS).

Uygulama Harf ve bayt

let s = "Ağaç"; için bayt sayısını, karakter sayısını ve karakterleri ters çevrilmiş halini (chars().rev().collect::<String>()) tek satırda yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn main() {
    let s = "Ağaç";
    let ters: String = s.chars().rev().collect();
    println!("{} {} {}", s.len(), s.chars().count(), ters);
}

Beklenen çıktı

6 4 çağA

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>"şeker".len()</code> nedir?

  • 5
  • 10
  • 4
  • 6 Doğru cevap

Açıklama: "ş" iki bayt, kalan dört harf birer bayt: 2 + 4 = 6.

2 Karakter say

Soru
let s = "çay";
let n = s.____().count();   // 3
Cevap
let s = "çay";
let n = s.chars().count();   // 3

Açıklama: chars Unicode karakterlerini tek tek verir.

3 İfade ve sonuç

Kavram Anlamı
"çay".len() 4
"çay".chars().count() 3
'ğ'.is_alphabetic() true
"abc".chars().rev() "cba" (collect ile)

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma