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

时间:2011-04-07 12:38:17

标签: objective-c string nsstring nscharacterset

我想从字符串中删除“#”。

我试过了

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

但它仍然将字符串显示为“A#BCD#D”

可能出现什么问题?

6 个答案:

答案 0 :(得分:56)

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

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

答案 1 :(得分:18)

你可以尝试

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

答案 2 :(得分: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;
}

你可以像这样使用它:

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

答案 3 :(得分:11)

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

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

答案 4 :(得分:3)

请参阅Apple文档:stringByReplacingOccurrencesOfString: method in NSString

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

希望这有帮助。

答案 5 :(得分:2)

使用以下

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