Положение символа в NSString или NSMutableString

Я искал в течение многих часов теперь и не нашел решение для своей проблемы. У меня есть NSString, который похож на следующее:

"распорная деталь": ["value1", "value2"], "распорная деталь": ["value1", "value2"]...

То, что я хочу сделать, должно удалить [] символы от строки. Это, кажется, невозможен с целью-c. Большинство других языков программирования предлагает функции как ремни для правки бритв или indexOf, которые позволяют мне искать символ или представлять в виде строки и определять положение его. Но там не кажется ничем, чтобы быть похожими на это в цели-c.

У кого-либо есть идея о том, как удалить эти символы? Дополнительно существуют [] символы в строке, которая должна остаться, таким образом, я не могу только использовать NSMutableString stringByReplacingOccurencesOfString:withString. Я должен искать сначала распорную деталь, представляют в виде строки и затем удаляют только следующие два [] символы.

Спасибо за помощь.

12
задан AxelEckenberger 4 March 2010 в 14:34
поделиться

2 ответа

Чтобы найти вхождения строки в строку, используйте методы 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.

23
ответ дан 2 December 2019 в 05:40
поделиться

Это сработало для меня, чтобы извлечь все в индекс символа, в данном случае '[':

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]";
NSRange range = [original rangeOfString:@"\["];
NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ];
NSLog(@"toBracket: %@", toBracket);
4
ответ дан 2 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: