web-dev-qa-db-ja.com

stringByTrimmingCharactersInSet:文字列の途中の文字を削除していません

文字列から「#」を削除したい。

私が試してみました

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

ただし、文字列は「A#BCD#D」と表示されます。

何が悪いのでしょうか?

19
Sookcha

あなたは試すことができます

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

stringByTrimmingCharactersInSetは、文字列内の任意の場所からではなく、文字列の最初と最後から文字を削除します

あなたの目的のために、他の人が指摘したようにstringByReplacingOccurrencesOfString:withString:メソッドを使用してください。

56
Vladimir

そのために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:@""];
14
cescofry

以前はこれに対して比較的複雑な再帰的な回答がありましたが(その回答を確認したい場合は、この回答の編集履歴を参照してください)、非常に単純な1つのライナーを見つけました。

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

Appleに関するドキュメント: stringByReplacingOccurrencesOfString:NSStringのメソッド を参照してください。

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

お役に立てれば。

3
Rakesh Bhatt

以下を使用してください

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