Ios iphonesdk:将中文句子分解成单词和字母
我有中文新闻提要,我想把这个句子分成小块传递给API 我怎样才能在ios中做到这一点?我已经为英语语言设置了50个字符的字符长度 目前我正在使用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
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份额