ToUppercase
ist ein Iterator, weil es mehr als eine Großbuchstabeversion eines Unicode-Zeichens gibt , da die Großbuchstabe des Zeichens aus mehreren Codepunkten bestehen kann, wie delnan in den Kommentaren gezeigt hat . Sie können das in einen Vektor von Zeichen umwandeln:
Dann sollten Sie diese Zeichen in einer Zeichenfolge sammeln, wie ker gezeigt.
ToUppercase
ist ein Iterator
, das mehr als ein char
ergeben kann. Dies ist notwendig, da einige Unicode-Zeichen aus mehreren "Unicode Scalar Values" bestehen (was ein Rust char
darstellt).
Ein schönes Beispiel sind die so genannten Ligaturen . Versuchen Sie dies zum Beispiel ( auf dem Spielplatz ):
%Vor%Die 'fi' Ligatur ist ein einzelnes Zeichen, dessen Großbuchstabe aus zwei Buchstaben / Zeichen besteht.
Es gibt mehrere Möglichkeiten, damit umzugehen:
&str
: Wenn Ihre Daten tatsächlich in Zeichenfolgenform vorliegen, verwenden Sie str::to_uppercase
, das ein String
zurückgibt, mit dem man leichter arbeiten kann. std::ascii::AsciiExt::to_ascii_uppercase
, das nur ein char
zurückgibt. Aber es ändert nur die Buchstaben 'a'
in 'z'
und ignoriert alle anderen Zeichen! String
oder Vec
wie im obigen Beispiel. Tags und Links rust