2

私はObjective Cに比較的慣れていないので、その文字がどこにあるのかインデックスがわかっている場合に、文字列内の文字を効率的に置き換える方法を見つけようとしています。

基本的に S が私の文字列である場合、これを実行できるようにしたいと思います s[i] = 'n' いくつかの i

しかし、これは私にはかなり高価に見えます:

NSRange range = NSMakeRange(0,1);
NSString *newString = [S stringByReplacingCharactersInRange:range withString:@"n"];

じゃないですか??

4

2 に答える 2

1

H2CO3は正しいです。可変配列を使用します。文字列へのインデックス付きアクセスをサポートするカテゴリを作成することもできます。

NSMutableString+Index.h

@interface NSMutableString (Index)
- (void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)idx;
@end

NSMutableString+Index.h

@implementation NSMutableString (Index)
- (void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)idx {
    [self replaceCharactersInRange:NSMakeRange(idx, 1) withString:anObject];
}
@end

何処か別の場所:

NSMutableString *str = [[NSMutableString alloc] initWithString:@"abcdef"];
str[2] = @"X";
NSLog(str);

出力:

abXdef

注: 索引付けされた構文を使用するカテゴリをインポートすることを忘れないでください。

于 2013-05-27T11:49:39.123 に答える