0

テキストのブロック (関連性がある場合は新聞記事) があり、objective-c で特定のキーワードを含むすべての文を抽出する方法があるかどうか疑問に思っていましたか? 私はParseKitを少し見てきましたが、あまり運がありません!

4

2 に答える 2

5

NSStringこのようなネイティブメソッドを使用して文を列挙できます...

NSString *string = @"your text";

NSMutableArray *sentences = [NSMutableArray array];

[string enumerateSubstringsInRange:NSMakeRange(0, string.length) 
                           options:NSStringEnumerationBySentences 
                        usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
    //check that this sentence has the string you are looking for
    NSRange range = [substring rangeOfString:@"The text you are looking for"];

    if (range.location != NSNotFound) {
        [sentences addObject:substring];
    }
}];

for (NSString *sentence in sentences) {
    NSLog(@"%@", sentence);
}

最後に、探していたテキストをすべて含む一連の文が表示されます。

于 2013-01-31T12:25:15.717 に答える
0

編集:コメントに記載されているように、私のソリューションにはいくつかの継承された弱点があります。これは、ピリオド + スペースが実際に文を終了するときにのみ使用される完全にフォーマットされた文を必要とするためです...人々にとって実行可能である可能性があるため、ここに残します別の (既知の) セパレーターでテキストをソートする。

あなたが望むものを達成する別の方法は次のとおりです。

NSString *wordYouAreLookingFor = @"happy";

NSArray *arrayOfSentences = [aString componentsSeparatedByString:@". "]; // get the single sentences
NSMutableArray *sentencesWithMatchingWord = [[NSMutableArray alloc] init];

for (NSString *singleSentence in arrayOfSentences) {
    NSInteger originalSize = [singleSentence length];
    NSString *possibleNewString = [singleSentence stringByReplacingOccurrencesOfString:wordYouAreLookingFor withString:@""];

    if (originalSize != [possibleNewString length]) {
        [sentencesWithMatchingWord addObject:singleSentence];
    }
}
于 2013-01-31T12:32:12.713 に答える