Tôi có một số UITextField
mà người dùng sẽ nhập ký tự vào. Nó đơn giản như thế nào, làm sao tôi có thể trả về chiều dài thực của nó? Khi chuỗi chứa ký tự A-Z 1-9, nó hoạt động như mong đợi nhưng bất kỳ biểu tượng cảm xúc hoặc ký tự đặc biệt nào đều được tính gấp đôi.Chiều dài NSString - Các ký tự đặc biệt
Trong đó là dạng đơn giản nhất, điều này chỉ có một phân bổ 2 ký tự đối với một số ký tự đặc biệt như biểu tượng cảm xúc:
NSLog(@"Field '%@' contains %i chars", myTextBox.text, [myTextBox.text length]);
Tôi đã cố gắng lặp qua từng nhân vật sử dụng characterAtIndex
, substringFromIndex
, vv và cũng chẳng thể.
Như mỗi câu trả lời dưới đây, mã chính xác sử dụng để đếm ký tự (hy vọng đây là cách tiếp cận đúng, nhưng nó hoạt động ..):
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);
Cảm ơn rất rất nhiều. Sau khi một số tinh chỉnh đã làm cho nó hoạt động! Đã cập nhật ở trên và được chấp nhận là câu trả lời (hãy cho tôi biết nếu tôi đã làm bất cứ điều gì sai!). Sẽ thêm video đó vào danh sách theo dõi của tôi, có một vài điều tôi thực sự cần phải đánh bóng ... Cảm ơn một lần nữa – Ralphonzo
Phương pháp này không hoạt động với một số ký tự biểu tượng cảm xúc như cờ. Phương thức của bạn sẽ trả về 2 cho các ký tự này. – Swordsfrog
Lifesaver, cảm ơn! – beebcon