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

StringByTrimmingCharactersInSet: не удаляет символы в середине строки

Я хочу удалить "#" из моей строки.

Я пробовал

 NSString *abc = [@"A#BCD#D" stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"#"]];

Но он все еще показывает строку как "A # BCD # D"

Что может быть неправильным?

4b9b3361

Ответ 1

Вы можете попробовать

NSString *modifiedString = [yourString stringByReplacingOccurrencesOfString:@"#" withString:@""];

Ответ 2

stringByTrimmingCharactersInSet удаляет символы из начала и конца строки, а не из любого места в ней

Для вашей цели используйте метод stringByReplacingOccurrencesOfString:withString:, как указывали другие.

Ответ 3

Я написал категорию NSString для этого:

- (NSString *)stringByReplaceCharacterSet:(NSCharacterSet *)characterset withString:(NSString *)string {
    NSString *result = self;
    NSRange range = [result rangeOfCharacterFromSet:characterset];

    while (range.location != NSNotFound) {
        result = [result stringByReplacingCharactersInRange:range withString:string];
        range = [result rangeOfCharacterFromSet:characterset];
    }
    return result;
}

Вы можете использовать его следующим образом:

NSCharacterSet *funnyCharset = [NSCharacterSet characterSetWithCharactersInString:@"#"];
NSString *newString = [string stringByReplaceCharacterSet:funnyCharset withString:@""];

Ответ 4

У меня ранее был относительно сложный рекурсивный ответ для этого (см. историю изменений этого ответа, если вы хотите увидеть этот ответ), но затем я нашел довольно простой один лайнер:  

- (NSString *)stringByRemovingCharactersInSet:(NSCharacterSet *)characterSet {
    return [[self componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
}

Ответ 6

Используйте ниже

NSString * myString = @"A#BCD#D";
NSString * newString = [myString stringByReplacingOccurrencesOfString:@"#" withString:@""];