Basée sur la rouille book, la méthode String::len
renvoie le nombre d'octets composant la chaîne, ce qui peut ne pas correspondre à la longueur en caractères.Obtention de la longueur de la chaîne en caractères dans Rust
Par exemple, si l'on considère la chaîne suivante en japonais, len()
reviendriez 30, qui est le nombre d'octets et non le nombre de caractères, ce qui serait 10:
let s = String::from("ラウトは難しいです!");
s.len() // returns 30.
La seule façon que j'ai trouvé pour obtenir le nombre de caractères utilise la fonction suivante:
s.chars().count()
qui retourne 10, et le nombre correct de caractères.
Existe-t-il une méthode sur String
qui renvoie le nombre de caractères, en dehors de celui que j'utilise ci-dessus?
Notez que ce idiosyncrasies donné Unicode, « nombre de caractères » ne signifie probablement pas que vous pensez. Par exemple, cette chaîne: "é" a _two_ caractères comme en témoigne le terrain de jeu: https://play.rust-lang.org/?gist=143ea763c0b16bd4ee12e628fb7ff4ca&version=stable, bien que cette chaîne: "é" n'a qu'un seul caractère: https : //play.rust-lang.org/? gist = af950651bb6394e7bc2a966147e1b035 & version = stable – Jmb
voir aussi https://crates.io/crates/unicode-segmentation – user25064