stringByTrimmingCharactersInSet: не удаляет символы в середине строки - PullRequest
19 голосов
/ 07 апреля 2011

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

Я пытался

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

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

Что может быть не так?

Ответы [ 6 ]

56 голосов
/ 07 апреля 2011

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

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

18 голосов
/ 07 апреля 2011

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

NSString *modifiedString = [yourString stringByReplacingOccurrencesOfString:@"#" withString:@""];
14 голосов
/ 01 мая 2013

Я написал категорию 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:@""];
11 голосов
/ 02 октября 2014

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

- (NSString *)stringByRemovingCharactersInSet:(NSCharacterSet *)characterSet {
    return [[self componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
}
3 голосов
/ 07 апреля 2011

См. Документацию Apple о: stringByReplacingOccurferencesOfString: метод в NSString

NSString *str1=[str stringByReplacingOccurrencesOfString:@"#" withString:@""];

Надеюсь, это поможет.

2 голосов
/ 07 апреля 2011

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

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