如何在iOS中的字符串中删除第三个逗号(,)之后的字符串



我从网络服务中得到一个字符串,如下所示: @"当前地址是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

我认为它比公认的答案更短、更容易理解、更容易修改,但这只是我的意见。

最新更新