文字列から「#」を削除したい。
私が試してみました
NSString *abc = [@"A#BCD#D" stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"#"]];
ただし、文字列は「A#BCD#D」と表示されます。
何が悪いのでしょうか?
あなたは試すことができます
NSString *modifiedString = [yourString stringByReplacingOccurrencesOfString:@"#" withString:@""];
stringByTrimmingCharactersInSet
は、文字列内の任意の場所からではなく、文字列の最初と最後から文字を削除します
あなたの目的のために、他の人が指摘したようにstringByReplacingOccurrencesOfString:withString:
メソッドを使用してください。
そのために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:@""];
以前はこれに対して比較的複雑な再帰的な回答がありましたが(その回答を確認したい場合は、この回答の編集履歴を参照してください)、非常に単純な1つのライナーを見つけました。
- (NSString *)stringByRemovingCharactersInSet:(NSCharacterSet *)characterSet {
return [[self componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""];
}
Appleに関するドキュメント: stringByReplacingOccurrencesOfString:NSStringのメソッド を参照してください。
NSString *str1=[str stringByReplacingOccurrencesOfString:@"#" withString:@""];
お役に立てれば。
以下を使用してください
NSString * myString = @"A#BCD#D";
NSString * newString = [myString stringByReplacingOccurrencesOfString:@"#" withString:@""];