Подтвердить что ты не робот

Позиция символа в NSString или NSMutableString

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

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

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

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

Спасибо, что помогли мне.

4b9b3361

Ответ 1

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

Ответ 2

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

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