Ios iphonesdk:将中文句子分解成单词和字母

Ios iphonesdk:将中文句子分解成单词和字母,ios,nsstring,chinese-locale,word-processor,Ios,Nsstring,Chinese Locale,Word Processor,我有中文新闻提要,我想把这个句子分成小块传递给API 我怎样才能在ios中做到这一点?我已经为英语语言设置了50个字符的字符长度 目前我正在使用rangeOfString:函数查找点、逗号和分句 NSString *str = nil, *rem = nil; str = [final substringToIndex:MAX_CHAR_Private]; rem = [final substringFromIndex:MAX_CHAR_Private]; NSRange rng = [re

我有中文新闻提要,我想把这个句子分成小块传递给API

我怎样才能在ios中做到这一点?我已经为英语语言设置了50个字符的字符长度

目前我正在使用
rangeOfString:
函数查找点、逗号和分句

NSString *str  = nil, *rem = nil;

str = [final substringToIndex:MAX_CHAR_Private];
rem = [final substringFromIndex:MAX_CHAR_Private];
NSRange rng = [rem rangeOfString:@"?"];
if (rng.location == NSNotFound) {
    rng = [rem rangeOfString:@"!"];
    if (rng.location == NSNotFound) {
        rng = [rem rangeOfString:@","];
        if (rng.location == NSNotFound) {
            rng = [rem rangeOfString:@"."];
            if (rng.location == NSNotFound) {
                rng = [rem rangeOfString:@" "];
            }
        }
    }
}
if (rng.location+1 + MAX_CHAR_Private > MAXIMUM_LIMIT_Private) {
    rng = [rem rangeOfString:@" "];
}

if (rng.location == NSNotFound) {
    remaining = [[final substringFromIndex:MAX_CHAR_Private] retain];
}
else{
    //NSRange rng = [rem rangeOfString:@" "];
    str = [str stringByAppendingString:[rem substringToIndex:rng.location]];
    remaining = [[final substringFromIndex:MAX_CHAR_Private + rng.location+1] retain];
}

这不适用于中文和日文字符。

请检查NSLinguagistTagger,它应适用于中文:

来自Apple:“NSLinguagisticTagger类用于自动分割自然语言文本,并使用诸如词类等信息对其进行标记。它还可以标记语言、脚本、词干形式等。”

苹果文档

另见


另请参见

NSString提供了开箱即用的NSSTRINGEnumerationByEntences枚举选项:

[string enumerateSubstringsInRange:NSMakeRange(0, [string length])
                           options:NSStringEnumerationBySentences
                       usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop)
    {
        NSString *sentence = [substring stringByTrimmingCharactersInSet:whiteSpaceSet];
        // process sentence
    }
];

“如果您使用的是iOS,那么您当前(从iOS 7开始)仅限于使用英语。在OS X(从10.9/Mavericks开始)上,您有一个稍大的可用列表;方法+[NSLanguagistics Tagger availableTagSchemesForLanguage:]列出给定语言的所有可用方案。限制iOS上的资源文件数量的可能原因是资源文件占用大量空间,这在笔记本电脑或台式机上很好,但在手机或平板电脑上却不太好。“从教程中了解到,您还有其他选择吗?Plz份额