chars ve bytes
- Rust kursu
- Başlangıç
- Ders 101/115
- 4 dk
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 121Metni 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
fn main() {
// buraya yaz
}Örnek çözüm
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
let s = "çay";
let n = s.____().count(); // 3
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) |