我正在开发一个需要限制用户输入字符串文本到200个字符的应用程序。
允许用户以任何语言输入字符串值。
我能够获得英文字符的字符串长度,但不能获得其他语言的字符串长度。
任何人都可以帮助我。
预期结果:
答案 0 :(得分:2)
您可能正在寻找extended grapheme clusters
,这是用户感知角色的良好定义。 Swift String的character
视图可以方便地提供。
Cocoa的NSString
提供了enumerateSubstringsInRange:options:usingBlock:
,可用于计算"组成的字符序列",类似:
@interface NSString (ComposedCharacterSequenceCount)
@property (nonatomic, readonly, getter=nr_composedCharacterSequenceCount) NSInteger composedCharacterSequenceCount;
@end
@implementation NSString (ComposedCharacterSequenceCount)
- (NSInteger)nr_composedCharacterSequenceCount
{
__block NSInteger count = 0;
[self enumerateSubstringsInRange:(NSRange){0, self.length}
options:NSStringEnumerationByComposedCharacterSequences | NSStringEnumerationSubstringNotRequired
usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {
count += 1;
}];
return count;
}
@end
此代码段为NSString添加了一个类别,可让您轻松计算字符数:
NSLog(@"count: %@", @(@"Roger is a nice guy".composedCharacterSequenceCount));
NSLog(@"count: %@", @(@"रॉजर एक छान माणूस आहे".composedCharacterSequenceCount));
NSLog(@"count: %@", @(@"罗杰是一个好人".composedCharacterSequenceCount));
打印:
count: 19
count: 16
count: 7