【问题标题】:String Search in two arrays in Objective CObjective 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 都是字符串。

标签: ios objective-c arrays


【解决方案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 中应该有@", "(注意空格)

      【讨论】:

      • 是的。如果我不知道会有多少常见项目,这将非常有帮助。谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2014-06-03
      相关资源
      最近更新 更多