我从网络服务中得到一个字符串,如下所示: @"当前地址是Narveer Tanaji Malusare路,Dandekar Pool,Dattavadi,浦那,马哈拉施特拉邦411030,印度"。 现在我想删除第三个逗号之后的字符串,所以地址看起来像: @"当前地址是Narveer Tanaji Malusare路,Dandekar Pool,Dattavadi"; 并删除第三个逗号。 请帮助我。
谢谢
使用 componentsSeparatedByString
:
NSString *list = @"current address is Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi, Pune, Maharashtra 411030, India";
NSArray *listItems = [list componentsSeparatedByString:@","];
// produces an array { @"Karin", @"Carrie", @"David"" }.
在这里检查列表项目计数是否>=3
NSString* reducedString = [NSString stringWithFormat:@"%@, %@, %@",[listItems objectAtIndex:0],[listItems objectAtIndex:1],[listItems objectAtIndex:2] ];
您可以使用基本的 NSString 方法实现您想要的。
我刚刚编写了一个完全符合您要求的方法:
-(NSString *) clearStringAfterThirdComma: (NSString *) originalString {
NSMutableString *clearedString = [originalString mutableCopy];
NSInteger commaCount = 0;
// iterate thru each character of the string
for (NSInteger i = 0; i < originalString.length; i++) {
NSString *subString = [originalString substringWithRange:NSMakeRange(i, 1)];
if ([subString isEqualToString:@","]) {
commaCount++;
if (commaCount == 3) {
[clearedString deleteCharactersInRange:NSMakeRange(i, originalString.length - i)];
break;
}
}
}
return clearedString;
}
这已经得到了回答,但这让我很困扰,所以这是我的解决方案;
方法如下:
- (NSString *)shortenedAddress:(NSString *)address {
// Turn the string into an array of each part separated by a comma
NSArray *components = [address componentsSeparatedByString:@","];
// No need to shorten the address if there are three items or less
if ([components count] < 4) {
return address;
}
// Create a range object for the first three items in the array
NSRange range;
range.location = 0;
range.length = 3;
return [[components subarrayWithRange:range] componentsJoinedByString:@","];
}
如果你用这个测试它:
NSString *fullAddress = @"current address is Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi, Pune, Maharashtra 411030, India"; // More than three items
NSString *partialAddress = @"current address is Narveer Tanaji Malusare Road, Dandekar Pool"; // Less than three items
NSLog(@"Full Address: %@", [self shortenedAddress:fullAddress]);
NSLog(@"Partial Address: %@", [self shortenedAddress:partialAddress]);
它在控制台中给出以下输出:
Full Address: current address is Narveer Tanaji Malusare Road, Dandekar Pool, Dattavadi
Partial Address: current address is Narveer Tanaji Malusare Road, Dandekar Pool
我认为它比公认的答案更短、更容易理解、更容易修改,但这只是我的意见。