私はユーザが文字を入力するUITextField
を持っています。それは私がそれを実際の長さに戻すにはどうすればいいのですか?文字列にA〜Z 1〜9の文字が含まれている場合、期待どおりに機能しますが、絵文字や特殊文字はダブルカウントされます。それにNSStringの長さ - 特殊文字
が最も簡単な形式ですが、これは単なる絵文字のようないくつかの特殊文字の2文字の割り当てを持っています
NSLog(@"Field '%@' contains %i chars", myTextBox.text, [myTextBox.text length]);
私はcharacterAtIndex
、substringFromIndex
などを使用して、各文字をループしようと、どこにもなっていません。以下の答えを1として
、正確なコードは、文字をカウントするために使用(これは正しいアプローチであると思いますが、それは動作します。):
NSString *sString = txtBox.text;
__block int length = 0;
[sString enumerateSubstringsInRange:NSMakeRange(0, [sString length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
length++;
}];
NSLog(@"Total: %u", length);
おかげで非常に非常に非常に特殊な文字や絵文字で動作するよう、以下のオプションを検討することができます。いくつかの微調整の後にそれが働くようになった!上に更新して答えとして受け入れました(私が何か間違ってしまったかどうかを教えてください)。そのビデオをウォッチリストに追加して、本当に磨き上げなければならないことがいくつかあります...ありがとうございました – Ralphonzo
このメソッドはフラグなどの絵文字では機能しません。あなたのメソッドはこれらの文字に対して2を返します。 – Swordsfrog
ライフセーバー、ありがとう! – beebcon