Положение символа в NSString или NSMutableString - PullRequest
12 голосов
/ 04 марта 2010

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

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

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

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

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

Ответы [ 2 ]

23 голосов
/ 04 марта 2010

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

Руководство по программированию String содержит более подробную информацию.
В качестве альтернативы вы также можете использовать класс NSScanner.

4 голосов
/ 20 августа 2010

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

NSString *original = @"\"spacer\": \[\"value1\", \"value2\"], \"spacer\": \[\"value1\", \"value2\"]";
NSRange range = [original rangeOfString:@"\["];
NSString *toBracket = [NSString stringWithString :[original substringToIndex:range.location] ];
NSLog(@"toBracket: %@", toBracket);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...