我正在谷歌搜索过去几个小时的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;
}
}
}
由于
答案 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];