假设我有两个这样的NSMutableString
: -
String
1 ----- {aaa,bss,cdd,dff,eee,fgh}
String
2 ----- {aaa,bss,cdd}
我们如何找到String
1&之间的区别? String
中的NSArray
2: -
像这样: - {dff,eee,fgh}
正如重复提到的那样,它是不同的。
答案 0 :(得分:2)
将这两个字符串放在两个不同的NSMutableSets中,然后从1st减去2nd。 你会得到你的结果。
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 :(得分: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);
希望它会对你有所帮助。
感谢。
答案 2 :(得分:0)
问题的第一部分是将每个字符串分成由逗号分隔的子字符串。
要创建子字符串,您可以使用
[string substringFromIndex:index]
- 从该索引获取NSString
[string substringToIndex:index]
- 从开始到该索引获取NSString
或者你可以把它结合起来
[string substringWithRange:NSMakeRange(fisrtIndex, secondIndex)]
- 从第一个索引到第二个索引获取strin
这些是基本操作。但在这种情况下你可以使用更多:
[string componentsSeparatedByString:@","]
获取包含所有子字符串的NSArray。这会产生'{'
和'}'
出现在第一个和最后一个组件中的问题。这可以通过多种方式解决:
[string componentsSeparatedByCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@",{"]]
此方法的问题是,因为您的字符串以其中一个分隔符开头/结尾,您将获得第一个/最后一个组件为空字符串。你可以将它从数组中删除或忽略它,或者选择其他方法,你的选择。
既然您知道如何获得子串,那么您需要知道的是如何比较两者。实际上有很多方法可以做到这一点。我只想举几个例子。当然,每种解决方案都有自己的优缺点和代码复杂性。
1 - 使用isEqualToString:
2 - 使用[string2 rangeOfString:substring].location != NSNotFound
3 - 如果你有iOS 8或OS X Yosemite,你可以使用[string2 containsString:substring]
4 - 您可以将子串数组转换为集合,然后将它们作为Ankit Srivastava建议进行比较
5 - 您可以使用removeObjectsInArray
来获取两者之间不常见的子串,然后将新创建的数组用于原始的removeObjectsInArray
,并且只有公共... < / p>
真的可能性几乎是无穷无尽的