NSString或NSMutableString中字符的位置

13

我已经搜寻了数小时,但仍未找到解决我的问题的方法。我有一个 NSString 字符串,其格式如下:

"spacer": ["value1", "value2"], "spacer": ["value1", "value2"], ...

我想要做的是将字符串中的 [ ] 字符移除。在 Objective-C 中似乎不可能完成此操作。大多数其他编程语言都提供了像 strpos 或 indexOf 这样的函数,可以搜索字符或字符串,并定位其位置。但在 Objective-C 中似乎没有这样的东西。

请问有没有任何想法可以移除这些字符?另外,字符串中还有应该保留的 [] 字符,因此我不能仅使用 NSMutableString 的 stringByReplacingOccurencesOfString:withString 方法。我需要先搜索 spacer 字符串,然后只删除接下来的两个 [] 字符。

谢谢你帮我。

2个回答

24
要在字符串中查找字符串的出现次数,请使用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);

字符串编程指南中有更多详细信息。
您还可以尝试使用NSScanner类。


4

以下方法适用于我,可以将所有内容提取到字符索引处,例如'[':

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接