0

中国のニュース フィードがあり、文を小さなチャンクに分割して 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];
}

これは、中国語と日本語の文字では正しく機能しません。

4

2 に答える 2

1

NSLinguisticTagger を確認してください。中国語で動作するはずです。

Apple から: 「NSLinguisticTagger クラスは、自然言語テキストを自動的にセグメント化し、品詞などの情報でタグ付けするために使用されます。また、言語、スクリプト、単語の語幹形式などにタグ付けすることもできます。」

Apple ドキュメントNSLinguisticTagger クラス リファレンス

NSHipster NSLinguisticTaggerも参照してください。

objc.io issue 7も参照してください

于 2014-07-02T12:19:19.963 に答える