我正在开发一个应用程序,需要限制用户输入字符串文本到200个字符。
允许用户在任何语言中输入字符串值。
我可以得到字符串长度的英文字符,但不能为其他语言。
有人能帮我吗。
预期结果:
发布于 2015-11-05 08:02:37
您可能正在寻找extended grapheme clusters,这是用户感知角色的一个很好的定义。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发布于 2022-09-03 00:44:26
下面的代码适用于我:
NSUInteger stringLength = [string lengthOfBytesUsingEncoding:NSUTF32StringEncoding] / 4;https://stackoverflow.com/questions/33539158
复制相似问题