如何用多个逗号分隔NSString?

时间:2014-10-27 05:00:46

标签: ios nsstring

我有这个nsstring

NSString * countryStr = @"6023117,159,en_US,Seychelles,SC,Seychelles,6023185,95,en_US,Kuwait,KW,Kuwait,6023182,172,en_US,Swaziland,SZ,Swaziland,6023185,157,en_US,Saudi Arabia,SA,Saudi Arabia,6023182,177,en_US,Tanzania,TZ,Tanzania,6023185,179,en_US,Togo,TG,Togo,6023185,87,en_US,Cote d'Ivoire,CI,Cote d'Ivoire";

现在我想只显示以" en_US"为后缀的国家/地区。 任何人都可以告诉我如何拆分该字符串以获得国家。

我确实喜欢这个

NSError * error;
NSString* imageName = [[NSBundle mainBundle] pathForResource:@"CountryList" ofType:@"txt"];
NSString * countrStr = [NSString stringWithContentsOfFile:imageName encoding:NSStringEncodingConversionAllowLossy error:&error];
NSArray * dfd = [countrStr componentsSeparatedByString:@"en_US"];
for(int i=0;i<dfd.count;i++)
{
    NSString * nama = [dfd objectAtIndex:1];
    NSArray * djk = [nama componentsSeparatedByString:@","];
    NSString * aksjd = [djk objectAtIndex:1];
}

3 个答案:

答案 0 :(得分:1)

最好的方法是

 NSString *string = [NSString stringWithFormat: @"%@, %@, %@", var1, var2, var3];

请原谅格式/语法错误。通过iPhone输入。但是如果有任何错误,请在apple开发者页面的iOS文档中查找stringWithFormat:以进行更正。

答案 1 :(得分:1)

你可以这样做;

NSString * countryStr = @"6023117,159,en_US,Seychelles,SC,Seychelles,6023185,95,en_US,Kuwait,KW,Kuwait,6023182,172,en_US,Swaziland,SZ,Swaziland,6023185,157,en_US,Saudi Arabia,SA,Saudi Arabia,6023182,177,en_US,Tanzania,TZ,Tanzania,6023185,179,en_US,Togo,TG,Togo,6023185,87,en_US,Cote d'Ivoire,CI,Cote d'Ivoire";

    NSArray * arrData = [countryStr componentsSeparatedByString:@","];;//[countryStr componentsSeparatedByString:@"en_US"];

    for(int i=0;i<arrData.count;i++)
    {
        NSString * str = [arrData objectAtIndex:i];

        if ([str isEqualToString:@"en_US"] && i<arrData.count-1)
        {
            NSString* countryName = [arrData objectAtIndex:i+1];

            NSLog(@"countryName %@", countryName);
        }
    }

但是您应该管理文件中的数据,从资源加载。

答案 2 :(得分:0)

您的字符串似乎具有以下模式:

  1. 一个数字,
  2. 另一个号码,
  3. 国家/地区语言代码
  4. 名称,
  5. 简短代码,
  6. 一个(其他)名称。
  7. 所以你可以做的就是使用这样的循环:

    for (int i = 0; i < dfd.count; i += 6) {
      if ( dfd[i + 2] ) } // check the country code at index i + 2
       // Do something
       }
     }