gpt4 book ai didi

objective-c - 在 NSString 文本 block 中分隔完整的句子

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:19 27 4
gpt4 key购买 nike

我一直在尝试使用正则表达式来分隔一大段文本中的完整句子。我不能使用 componentsSeparatedByCharactersInSet,因为它显然会因以 ?!、!!、结尾的句子而失败……我见过一些外部类可以执行 componentSeparateByRegEx,但我更喜欢在不添加外部库的情况下执行此操作。

这是一个示例输入嗨,我正在测试。你好吗?哇!!这是最好的,我很高兴。

输出应该是一个数组

第一个元素:你好,我正在测试。

第二个元素:你好吗?

第三个元素:哇!!

第四要素:这是最好的,我很高兴。

这就是我所拥有的,但正如我所提到的,它不应该按照我的意图进行。可能正则表达式在这里会做得更好。

-(NSArray *)getArrayOfFullSentencesFromBlockOfText:(NSString *)textBlock{
NSMutableCharacterSet *characterSet = [[NSMutableCharacterSet alloc] init];
[characterSet addCharactersInString:@".?!"];
NSArray * sentenceArray = [textBlock componentsSeparatedByCharactersInSet:characterSet];
return sentenceArray;
}

感谢您的帮助,

最佳答案

您想将 -[NSString enumerateSubstringsInRange:options:usingBlock:]NSStringEnumerationBySentences 选项一起使用。这将为您提供每个句子,并且以语言感知的方式提供。

NSArray *fullSentencesFromText(NSString *text) {
NSMutableArray *results = [NSMutableArray array];
[text enumerateSubstringsInRange:NSMakeRange(0, [text length]) options:NSStringEnumerationBySentences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
[results addObject:substring];
}];
return results;
}

请注意,在测试中,每个子字符串似乎都包含标点符号后的尾随空格。你可能想把它们去掉。

关于objective-c - 在 NSString 文本 block 中分隔完整的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11402492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com