我正在寻找一种可以从NSStrings中提取相同单词的方法。这听起来令人困惑,但这就是我在寻找的东西:
字符串1:@"Word 4"
字符串2:@"Word 5"
- >结果:@"Word"
作为NSString(因为4和5不相同,它们被删除,然后是空格,因为,它是无用的)
此函数还需要删除单词而不是字符,因此输入将产生如下内容:
字符串1:@"Word Abcdef"
字符串2:@"Word Abcedf"
- >结果:@"Word"
代替@"Word Abc"
- 或 -
字符串1:@"Word 12"
字符串2:@"Word 15"
- >结果:@"Word"
代替@"Word 1"
答案 0 :(得分:1)
我会用componentsSeparatedByString:这样的空格字符拆分两个字符串,然后使用循环将一个数组中的每个字与另一个数组进行比较。如果单词出现在两个数组中,我会将它添加到NSMutableArray中,最后使用componentsJoinedByString:来获取最终的字符串。
希望这有帮助。
答案 1 :(得分:0)
将字符串拆分为单词数组,然后遍历数组以提取相似的单词。
NSArray* firstStringComponents = [string1 componentsSeparatedByString:@" "];
NSArray* secondStringComponents = [string2 componentsSeparatedByString:@" "];
BOOL notAtEnd = true;
int i = 0;
NSMutableString* returnString = [[NSMutableString alloc] init];
while(notAtEnd)
{
NSString* one = [firstStringComponents objectAtIndex:i];
NSString* two = [secondStringComponents objectAtIndex:i];
if([one isEqualTo:two])
//append one to the returnString
i++;
notAtEnd = i < [firstStringComponents count] && i < [secondStringComponents count];
}
return returnString;
答案 2 :(得分:0)
我同时采用了@Moszi和@Carters的想法并缩短了代码的效率,这是我迄今为止所发现的工作:
NSArray *words = [@"String 1" componentsSeparatedByString:@" "];
NSArray *words2 = [@"String 2" componentsSeparatedByString:@" "];
NSMutableString *title = [NSMutableString string];
for (NSInteger i = 0; i < [words count] && i < [words2 count]; i++) {
NSString *word = [words objectAtIndex:i];
NSString *word2 = [words2 objectAtIndex:i];
if ([word caseInsensitiveCompare:word2] == NSOrderedSame)
[title appendFormat:@"%@%@",(([title length]>0)?@" ":@""), word];
}
我还确保当一个字符串的单词多于另一个字符串时不会出现错误。