Я искал в течение многих часов теперь и не нашел решение для своей проблемы. У меня есть NSString, который похож на следующее:
"распорная деталь": ["value1", "value2"], "распорная деталь": ["value1", "value2"]...
То, что я хочу сделать, должно удалить [] символы от строки. Это, кажется, невозможен с целью-c. Большинство других языков программирования предлагает функции как ремни для правки бритв или indexOf, которые позволяют мне искать символ или представлять в виде строки и определять положение его. Но там не кажется ничем, чтобы быть похожими на это в цели-c.
У кого-либо есть идея о том, как удалить эти символы? Дополнительно существуют [] символы в строке, которая должна остаться, таким образом, я не могу только использовать NSMutableString stringByReplacingOccurencesOfString:withString. Я должен искать сначала распорную деталь, представляют в виде строки и затем удаляют только следующие два [] символы.
Спасибо за помощь.
Чтобы найти вхождения строки в строку, используйте методы rangeOfXXX в классе NSString. Затем вы можете построить 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.
Это сработало для меня, чтобы извлечь все в индекс символа, в данном случае '[':
NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]";
NSRange range = [original rangeOfString:@"\["];
NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ];
NSLog(@"toBracket: %@", toBracket);