Удалить экземпляры всех символов, кроме одного, из NSString

У меня есть NSString, который динамичен и постоянно меняется. Мне нужно взять этот NSString и заменить вхождения каждого символа в нем на @ "", кроме строки @ "\ n"

Итак, если у меня есть NSString *string = @"This is my string at 10:00PM\n I hate this string\n";, поэтому, если я удалю все, кроме \ n, заменив все на @ "" и заменив \ n вхождений на 1, моя новая строка в конце будет 11, поскольку есть два вхождения. Строка также может содержать любой существующий символ, поэтому необходимо удалить все, кроме \ n.

Как я мог это сделать?


person Matt    schedule 08.12.2011    source источник
comment
Вы используете iOS или OSX? Поскольку developer.apple.com/library/ mac / # documentation / Foundation / :)   -  person Powertieke    schedule 08.12.2011


Ответы (2)


Если вам нужно более удобное, хотя и немного более интенсивное по памяти решение:

NSUInteger numNewlines = [[string componentsSeparatedByString:@"\n"] count] - 1;
NSMutableString *ones = [[NSMutableString alloc] initWithCapacity:numNewlines];
for (int i = 0; i < numNewLines; i++) {
    [ones appendString:@"1"];
}
person Craig Otis    schedule 08.12.2011

Я думаю, что проще сделать что-то вроде

NSString *newString = @"";
for(int i=0;i<[string length]; i++) 
    if([string characterAtIndex:i]=='\n')
        newString = [newString stringByAppendingString:@"1"];

string = newString;
person Manlio    schedule 08.12.2011