stringByTrimmingCharactersInSet:不删除字符串中间的字符

Soo*_*cha 19 string objective-c nsstring nscharacterset

我想从我的字符串中删除"#".

我试过了

 NSString *abc = [@"A#BCD#D" stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"#"]];
Run Code Online (Sandbox Code Playgroud)

但它仍然显示字符串为"A#BCD#D"

可能有什么不对?

Vla*_*mir 56

stringByTrimmingCharactersInSet 从字符串的开头和结尾删除字符,而不是从字符串中的任何位置删除

为了您的目的使用stringByReplacingOccurrencesOfString:withString:方法作为其他人指出.

  • 那么为什么heck不称它为"stringByTrimmingCharactersInSetJustFromTheVeryEndOrVeryBeginning"...... (4认同)
  • 我想修剪意味着,但我不是母语为英语的人:) (2认同)

vis*_*kh7 18

你可以试试

NSString *modifiedString = [yourString stringByReplacingOccurrencesOfString:@"#" withString:@""];
Run Code Online (Sandbox Code Playgroud)


ces*_*fry 14

我写了一个类别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;
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

NSCharacterSet *funnyCharset = [NSCharacterSet characterSetWithCharactersInString:@"#"];
NSString *newString = [string stringByReplaceCharacterSet:funnyCharset withString:@""];
Run Code Online (Sandbox Code Playgroud)


Art*_*are 11

我以前有一个相对复杂的递归答案(如果你想看到这个答案,请参阅这个答案的编辑历史),但后来我找到了一个非常简单的一个班轮: 

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