Ich habe ein UITextField
, in das Benutzer Zeichen eingeben. Es ist so einfach wie, wie kann ich die tatsächliche Länge zurückgeben? Wenn die Zeichenfolge A-Z 1-9 Zeichen enthält, funktioniert es wie erwartet, aber alle Emoji oder Sonderzeichen werden doppelt gezählt.
In seinem einfachsten Format hat dies nur eine Zuweisung von 2 Zeichen für einige Sonderzeichen wie Emoji:
%Vor% Ich habe versucht, jedes Zeichen mit characterAtIndex
, substringFromIndex
usw. durchzuschleifen und habe nichts erreicht.
Wie in der Antwort unten angegeben, wird der genaue Code verwendet, um Zeichen zu zählen (hoffe, dies ist der richtige Ansatz, aber es funktioniert ..):
%Vor% Das [myTextBox.text length]
gibt die Anzahl der Unichars und nicht die sichtbare Länge des Strings zurück. é = e+´
, das sind 2 Unichars. Die Emoji-Zeichen sollten mehr 1 Unichar enthalten.
In diesem Beispiel wird durch jeden Zeichenblock in der Zeichenfolge aufgelistet. Das heißt, wenn Sie den Bereich von substringRange
protokollieren, kann er länger als 1 sein.
Sie sollten sich die Session 128 - Advance Text Processing von 2011 WWDC anschauen. Sie erklären, warum es so ist. Es ist wirklich großartig!
Ich hoffe, das war zu irgendeiner Hilfe.
Prost!
Tags und Links objective-c nsstring special-characters uitextfield