字符在NSString或NSMutableString中的位置

时间:2010-03-04 14:30:40

标签: objective-c nsstring replace nsmutablestring

我已经搜索了几个小时,但没有找到解决我问题的方法。我有一个NSString,如下所示:

“spacer”:[“value1”,“value2”],“spacer”:[“value1”,“value2”],...

我想要做的是从字符串中删除[]字符。使用objective-c似乎是不可能的。大多数其他编程语言提供了诸如strpos或indexOf之类的函数,它允许我搜索字符或字符串并找到它的位置。但是在目标c中似乎没有这样的东西。

有没有人知道如何删除这些字符? 另外在字符串中有[]字符应该保留,所以我不能只使用NSMutableString stringByReplacingOccurencesOfString:withString。我需要首先搜索spacer字符串,然后只删除接下来的两个[]字符。

感谢您帮助我。

2 个答案:

答案 0 :(得分:22)

要查找字符串中字符串的出现次数,请使用NSString类中的rangeOfXXX方法。然后你可以构造NSRanges来提取子串等。

此示例仅删除示例字符串中的第一组打开/关闭括号...

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]";
NSLog(@"%@", original);

NSRange startRange = [original rangeOfString:@"\["];
NSRange endRange = [original rangeOfString:@"]"];

NSRange searchRange = NSMakeRange(0, endRange.location);
NSString *noBrackets = [original stringByReplacingOccurrencesOfString:@"\[" withString:@"" options:0 range:searchRange];
noBrackets = [noBrackets stringByReplacingOccurrencesOfString:@"]" withString:@"" options:0 range:searchRange];
NSLog(@"{%@}", noBrackets);

String Programming Guide有更多细节 您也可以使用NSScanner类。

答案 1 :(得分:4)

这对我有用,可以将所有内容提取到字符的索引中,在本例中为'[':

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]";
NSRange range = [original rangeOfString:@"\["];
NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ];
NSLog(@"toBracket: %@", toBracket);