2016-01-14 1 views
1

Пусть у меня есть два NSMutableString вроде этого: -Найти между двумя разделенные запятой NSMutableString

String 1 ----- {ааа, ПБС, CDD, DFF, эээ, FGH}

String 2 - ---- {ааа, ПБС, CDD}

Как мы можем найти разницу между String 2 в NSArray: -

Как это: - {DFF, еее, FGH}

Как упомянуто в двух экземплярах, вопрос другой.

+0

Включает ли строка '{' фигурные скобки? –

ответ

2

Поместите обе эти строки в два разных набора NSMutable, а затем вычтите 2-й из 1-го. У вас будет свой результат.

NSString* str1 = @"aaa,bss,cdd,dff,eee,fgh"; 
NSString* str2 = @"aaa,bss,cdd"; 

NSMutableSet *set1 = [NSMutableSet setWithArray:[str1 componentsSeparatedByString:@","]]; 
NSMutableSet *set2 = [NSMutableSet setWithArray:[str2 componentsSeparatedByString:@","]]; 

[set1 minusSet:set2]; 

NSLog(@"result %@",[set1 allObjects]); 
1

Попробуйте NSMutableArray, чтобы удалить те же объекты.

Для примера.

NSString *s1 = @"aaa,bss,cdd,dff,eee,fgh"; 
NSString *s2 = @"aaa,bss,cdd"; 

NSArray *arr1 = [s1 componentsSeparatedByString:@","]; 
NSArray *arr2 = [s2 componentsSeparatedByString:@","]; 

NSMutableArray *resArray = [NSMutableArray arrayWithArray:arr1]; 
[resArray removeObjectsInArray:arr2]; 

NSString *res = [resArray componentsJoinedByString:@","]; 
NSLog(@"Result :: %@", res); 

Надеюсь, это поможет вам.
Спасибо.

0

Первой частью проблемы является разделение каждой строки на подстроки, разделенные запятыми.

Для создания подстроки можно использовать

[string substringFromIndex:index] - получить NSString из этого индекса перемещения вперед [string substringToIndex:index] - получить NSString от начала до этого индекса Или вы могли бы объединить его в [string substringWithRange:NSMakeRange(fisrtIndex, secondIndex)] - получить нить от первого индекса ко второму индексу

Это основные операции. Но в этом случае вы можете использовать гораздо больше:

[string componentsSeparatedByString:@","], чтобы получить NSArray со всеми подстроками. У этой проблемы были бы проблемы '{' и '}', появляющиеся в первом и последнем компонентах. Эту проблему можно решить несколькими способами:

  • на первой обрезки строку с помощью методов подстроку уже пояснялось
  • с использованием другого метода в целом

[string componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@",{"]] Проблема этого метода является то, потому что ваши строки start/end с одним из разделителей вы получите первый/последний компонент пустой строки. Вы можете просто удалить его из массива или игнорировать его или выбрать другой метод, по вашему выбору.

Теперь, когда вы знаете, как получить подстроки, все, что вам нужно знать, - это сравнить их. Существует буквально много способов сделать это. Я просто назову несколько. Конечно, каждое решение имеет свои преимущества, недостатки и сложность кода.

1 - сравнивая каждую подстроку одну за другой другая, используя isEqualToString:

2 - сравнение каждой подстроки из одного из исходных строк с полным второй исходной строки с помощью [string2 rangeOfString:substring].location != NSNotFound

3 - если у вас есть IOS 8 или OS X Yosemite вы можете использовать [string2 containsString:substring]

4 - вы можете преобразовать массив подстрок в наборы, а затем сравнить их Анкит Шривастава предложил

5 - Вы можете использовать removeObjectsInArray получить подстроки, которые не распространены между ними, а затем использовать что вновь созданный массив removeObjectsInArray к оригиналу и имеют только общие ...

Действительно возможности почти безграничны

 Смежные вопросы

  • Нет связанных вопросов^_^