如何在 IOS 中查找多语言句子的字符串长度

How to find string length for the multi language sentence in IOS

我正在开发一个需要限制用户输入不超过 200 个字符的字符串文本的应用程序。

允许用户以任何语言输入字符串值。

我可以获取英文字符的字符串长度,但不能获取其他语言的字符串长度。

谁能帮帮我

预期结果:

您可能正在寻找 extended grapheme clusters,这是对用户感知特征的一个很好的定义。 Swift String 的 character 视图提供了方便。

Cocoa的NSString提供了enumerateSubstringsInRange:options:usingBlock:可以用来统计"composed character sequences",类似:

@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