19

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

我试过了

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

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

有什么问题?

4

6 回答 6

56

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

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

于 2011-04-07T12:40:57.237 回答
18

你可以试试

NSString *modifiedString = [yourString stringByReplacingOccurrencesOfString:@"#" withString:@""];
于 2011-04-07T12:40:50.097 回答
15

我为此写了一个类别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:@""];
于 2013-05-01T11:46:50.130 回答
11

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

- (NSString *)stringByRemovingCharactersInSet:(NSCharacterSet *)characterSet {
    return [[self componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
}
于 2014-10-01T23:00:25.657 回答
3

请参阅 Apple 文档:stringByReplacingOccurrencesOfString: NSString 中的方法

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

希望这可以帮助。

于 2011-04-07T12:40:56.983 回答
2

下面使用

NSString * myString = @"A#BCD#D";
NSString * newString = [myString stringByReplacingOccurrencesOfString:@"#" withString:@""];
于 2011-04-07T12:42:02.417 回答