gpt4 book ai didi

ios - 使用 stringByReplacingOccurrencesOfString 来考虑 "words"

转载 作者:行者123 更新时间:2023-11-29 12:35:45 24 4
gpt4 key购买 nike

我的目标是使用 stringByReplacingOccurrencesOfString 来替换出现的单词或短语。单词和它们的替换在字典中找到,例如单词或短语是键,它们的值是它们的替换:

{"is fun" : "foo",
"funny" : "bar"}

因为 stringByReplacingOccurrencesOfString 是字面意思并且忽略了西方语言约定俗成的“单词”,所以我遇到了以下句子的麻烦:

"He is funny and is fun",

短语“is fun”实际上使用此方法被检测到两次:第一次是“is funny”的一部分,第二次是“is fun”的一部分,导致文字occurrence 用于单词替换,并没有意识到它实际上是另一个单词的一部分。

我想知道是否有一种方法可以使用 stringByReplacingOccurrencesOfString 来考虑措辞,因此可以完整地查看像“is funny”这样的短语,而不是同时查看如“很有趣ny”,其中检测到“很有趣”。

顺便说一句,这是我在遍历字典中的所有键时用于替换的代码:

NSString *newText = [wholeSentence stringByReplacingOccurrencesOfString:wordKey withString:wordValue options:NSLiteralSearch range:[wholeSentence rangeOfString:stringByReplacingOccurrencesOfString:wordKey]];
iteratedTranslatedText = newText;

编辑 1:使用建议的解决方案,这就是我所做的:

NSString *string = @"Harry is fun. Shilp is his fun pet dog";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\bis fun\b" options:0 error:nil];
if (regex != nil) {
NSTextCheckingResult *firstMatch = [regex firstMatchInString:string options:0 range:NSMakeRange(0, string.length)];
//firstMatch is returning null
if (firstMatch) {
NSRange resultRange = [firstMatch rangeAtIndex:0];
NSLog(@"first match at index:%lu", (unsigned long)resultRange.location);

}
}

但是,这会将 firstMatch 返回为 null。根据正则表达式 tutorial在单词边界上,这是锚定单词或短语的方法,所以我不确定为什么它不返回任何内容。感谢您的帮助!

最佳答案

作为您的评论,您可以在您的项目中使用 NSRegrlarEXPression。例如:

NSString *string = @"He is funny and is fun";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"is fun([^a-zA-Z]+|$)" options:0 error:nil];
if (regex != nil) {
NSTextCheckingResult *firstMatch = [regex firstMatchInString:string options:0 range:NSMakeRange(0, string.length)];
if (firstMatch) {
NSRange resultRange = [firstMatch rangeAtIndex:0];
NSLog(@"first match at index:%d", resultRange.location);
}
}

结果:第一个匹配项位于索引:16

关于ios - 使用 stringByReplacingOccurrencesOfString 来考虑 "words",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26374140/

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