Получить похожие символы в NSStrings - PullRequest
0 голосов
/ 23 ноября 2011

Я ищу метод, который может извлечь те же слова из строк 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 ]

1 голос
/ 23 ноября 2011

Я бы разделил обе строки символами пробела, такими как componentSeparatedByString:, затем использовал бы цикл для сравнения каждого слова из одного массива в другой.если слово появляется в обоих массивах, я бы добавил его в NSMutableArray, а в конце использовал componentJoinedByString: чтобы получить вашу окончательную строку.

0 голосов
/ 23 ноября 2011

Я взял идеи @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];
}

Я также сделал так, чтобы ошибка не возникала, когда в одной строке больше слов, чем в другой.

0 голосов
/ 23 ноября 2011

Разделите строки на массив слов, а затем выполните итерацию по массиву, чтобы извлечь похожие слова.

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;
...