Objective C中的两个数组中的字符串搜索

Posted

技术标签:

【中文标题】Objective C中的两个数组中的字符串搜索【英文标题】:String Search in two arrays in Objective C 【发布时间】:2015-11-06 09:23:55 【问题描述】:

我的代码中有这个所有国家/地区的数组。我想通过该数组比较另一个第二个数组以检查它是否包含国家/地区名称。

例子

NSString *str=@"Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica,"; 
NSArray *arr = [str componentsSeparatedByString:@","];


NSString *myStr = "Toyota, Nissan, Bottle, Albania, Pen, Bag";
NSArray *myarr = [myStr componentsSeparatedByString:@","];

我想比较一下,如果MyStringArray 中有与CountryArray[] 匹配的国家/地区名称,则分配给字符串。

【问题讨论】:

我认为这不是有效的 Obj-C 语法 @Arc676 我将其用于演示目的只是为了得到这个想法。我的数组中只有一个国家/地区 数组中有哪些数据类型? @Arc676 都是字符串。 Finding Intersection of NSMutableArrays的可能重复 【参考方案1】:
int originLength = MyStringArray.count;

NSMutableArray *arr = [NSMutableArray arrayWithArray:MyStringArray];
[arr removeObjectsInArray: CountryArray];
int diff = [arr count];

if (originLength == diff) 
/// all diff

else 

【讨论】:

【参考方案2】:

其他答案也可以,但有一个 NSArray 方法可以让这变得微不足道:

NSArray *countryNamesArray = @[@"Australia", @"Japan", @"Sweden"];
NSArray *arrayContainingOneCountryName = @[@"Dog", @"Felafel", @"Australia"];

NSString *matchingCountry = [arrayContainingOneCountryName firstObjectCommonWithArray:countryNamesArray];
NSLog(@"%@", matchingCountry);

【讨论】:

【参考方案3】:

编辑:没关系,使用其他答案;它更好。我将把它留在这里作为替代方法。

您可以遍历MyStringArray 中的元素并使用[NSArray contains:] 来检查元素是否存在。

NSMutableArray *commonItems;
for (String *str in MyStringArray)
    if ([Country containsObject:str])
        //Both arrays contains str
        [commonItems addObject:str];
    

//commonItems now contains the country

我使用了一个数组,因为您没有指定可能有多少常见项目。

另外,componentsSeparatedByString 中应该有@", "(注意空格)

【讨论】:

是的。如果我不知道会有多少常见项目,这将非常有帮助。谢谢

以上是关于Objective C中的两个数组中的字符串搜索的主要内容,如果未能解决你的问题,请参考以下文章

objective-c 中如何在一个函数中调用自己类中的另外一个函数

同一个视图控制器Objective C中的两个UI选择器?

将 JSON 字符串解析为对象数组 Objective C

如何访问字典数组并使用Objective C中的字典对象?

如何在swift中实现数组的深拷贝

根据我的以下示例,如何将数组添加到 Objective c 中的另一个数组?