사용자가 문자를 입력 할 UITextField
입니다. 그것은 그것의 실제 길이를 어떻게 돌려 보낼 수 있을까요? 문자열에 A-Z 1-9 문자가 포함되어 있으면 예상대로 작동하지만 이모티콘이나 특수 문자는 두 번 계산됩니다. 그것에서NSString 길이 - 특수 문자
이는 이모티콘과 같은 몇 가지 특수 문자를 2 개 문자의 할당을 가지고, 간단한 형식이다 : 나는 등 characterAtIndex
, substringFromIndex
를 사용하여 각 문자를 통해 반복 시도하고 아무데도 없어 한
NSLog(@"Field '%@' contains %i chars", myTextBox.text, [myTextBox.text length]);
. 아래의 답변을 당으로
, 정확한 코드는 문자를 계산하는 데 사용 (이 올바른 접근 희망하지만, 그것을 작동합니다 ..) :
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