1

テキストの段落を調べて、一度に 1 つの文を返す列挙子を書きたいと思います。NSStringEnumerationBySentences で stringEnumerate を使用しようとしましたが、単にピリオドを見て失敗します。たとえば、次のテキスト ブロックがあるとします。

「ジョン・A・ベーナー上院議員は前に進まないことを決めた.彼はまた議会を招集しないことを決めた.ニュースレポーターは言った....」

上記の段落を次の文に分解する関数を希望します。

  1. ジョン・A・ベーナー上院議員は前進しないことを決定した

  2. 彼はまた、議会を招集しないことを決定しました(半文なので3番目の文はありません)

文オプションを指定した文字列列挙子は、ピリオドを見て、そのように分解しますが、これは間違っています。

  1. 上院議員ジョン A.

  2. ベーナーは前に進まないことを決めた

  3. 彼はまた、議会を招集しないことを決定した

  4. 新聞記者が言ってたけど…

これでより良い仕事をするために呼び出すことができるライブラリまたは関数はありますか?

ありがとう

- (NSMutableString *) getOnlyFullSentencesFromTextBlock:(NSMutableString *) textBlock{
    [textBlock enumerateSubstringsInRange:NSMakeRange(0, [textBlock length])
                                  options:NSStringEnumerationBySentences | NSStringEnumerationLocalized
                                usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop)
    {
        NSLog(@"Sentence Frag:%@", substring);                                                                        
    }];
    return textBlock;
}
4

2 に答える 2

0

私が思いつく唯一の解決策は、ピリオドの前の最後の単語が大文字で始まっているかどうかを確認することです。もしそうで、その単語の文字数が 3 か 4 を超えていない場合 (何がうまく機能するかを確認する必要があります)、おそらくそれは略語です。
これがすべてのケースをカバーしているわけではないことはわかっていますが、ほとんどのケースで機能する可能性があります。

于 2012-06-30T15:12:34.400 に答える