在NSStrings中获取类似的字符

时间:2011-11-23 18:08:22

标签: ios nsstring compare

我正在寻找一种可以从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"

3 个答案:

答案 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];
}

我还确保当一个字符串的单词多于另一个字符串时不会出现错误。