在NSString中出现一个字符

时间:2012-08-29 13:50:46

标签: iphone objective-c ios nsstring

我正在谷歌搜索过去几个小时的NSSting操作方法。并发现许多堆栈溢出,如here

我有一个String “1800 Ellis St,San Francisco,CA 94102,USA”。字符串可以包含任意数量的“,”。我必须在“,”之后取第三个(圣弗朗西斯科)和最后一个(美国)子串。

输出应为“ San Franncisco USA ”。

我有逻辑如何在我的脑海中这样做,但我正在努力实现它。

我尝试使用此代码获取字符串中最后三个“,”的位置。但这对我不起作用

 NSInteger commaArr[3];

        int index=0;   
        int commaCount=0;

        for(unsigned int  i =  [strGetCityName length]; i > 0; i--)
        {
            if([strGetCityName characterAtIndex:i] == ',')
            {

                commaArr[index]=i;
                index++;
                ++commaCount;
                if(commaCount == 3)
                {
                    break;
                }
            }
        }

由于

3 个答案:

答案 0 :(得分:2)

你可以这样做:

NSString *s = @"1800 Ellis St, San Francisco, CA 94102, USA";
NSArray *parts = [s componentsSeparatedByString:@","];
NSUInteger len = [parts count];
NSString *res;
if (len >= 3) {
    res = [NSString stringWithFormat:@"%@%@", [parts objectAtIndex:len-3], [parts objectAtIndex:len-1]];
} else {
    res = @"ERROR: Not enough parts!";
}

componentsSeparatedByString:会将字符串拆分为,,而stringWithFormat:会将部分重新组合在一起。

答案 1 :(得分:1)

NSString *s = @"1800 Ellis St, San Francisco, CA 94102, USA";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^(?:[^,]*,)?\\s*([^,]*),\\s*(?:[^,]*),\\s*([^,]*)$" options:0 error:NULL];
NSString *result = [regex stringByReplacingMatchesInString:s options:0 range:NSMakeRange(0, [s length]) withTemplate:@"'$1 $2'"];

答案 2 :(得分:0)

试试这个:

NSString *string = @"1800 Ellis St, San Francisco, CA 94102, USA";
NSArray *components = [string componentsSeparatedByString:@","];
NSString *sanFrancisco = [components objectAtIndex:components.count - 3];
NSString *usa = [components objectAtIndex:components.count - 1];
NSString *result = [sanFrancisco stringByAppendingString:usa];