在已有的字符串上追加字符



我试图追加和编程修改一个NSString在飞行。我想知道一些事情:

    如何在定义的NSString中修改特定的字符?如何在定义的NSString中添加字符?

例如,如果我定义了以下内容:NSString *word = [[NSString alloc] initWithString:@"Hello"];我如何能够将字母"e"替换为"a",以及我如何将另一个字符添加到字符串本身?

永远不要使用NSString进行字符串操作,使用NSMutableString。NSMutableString是NSString的子类,用于这个目的。

来自Apple文档:

NSString类为管理不可变字符串的对象声明了可编程接口。(不可变字符串是在创建时定义的文本字符串,随后不能更改。NSString 被实现来表示Unicode字符数组(换句话说,一个文本字符串)。

NSString的可变子类是NSMutableString

NSMutableString *word = [[NSMutableString alloc] initWithString:@"Hello"];
//Replace a character 
NSString*  word2 = [word stringByReplacingOccurrencesOfString:@"e" withString:@"a"];
[word release];
word = nil ;
word = [[NSMutableString alloc] initWithString:word2 ];
//Append a Character
[word appendString:@"a"];

有更多的字符串操作函数参见Apple文档中的NSMutableString

编辑:

您可以首先使用rangeOfString来获取字符串的范围(在您的例子中是@"e")。

- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

然后检查NSRange对象是否有效,然后在NSMutableString上使用replaceCharactersInRange函数将字符集替换为字符串。

- (void)replaceCharactersInRange:(NSRange)aRange withString:(NSString *)aString

NSString实例是不可变的。你可以通过在另一个NSString实例中添加或替换字符来创建新的NSString实例,像这样:

NSString *foo = @"Foo";
NSString *bar = @"Bar";
NSString *foobar = [foo stringByAppendingString:bar];
NSString *baz = [bar stringByReplacingOccurrencesOfString:@"r" withString:@"z"];

如果你真的需要直接修改一个实例,你可以使用NSMutableString而不是NSString。

如果你真的想使用原始字符,NSString有几个初始化器可以接受字符数组(例如initWithCharacters:length:)。

重要的事情先说:

如果你要修改字符串,你必须使用NSMutableString。nsstring不能被修改,因此它们有一个可修改的同伴。

然后,NSMutableString有两个你会发现有用的方法:

replaceCharactersInRange: withStringdeleteCharactersInRange:

(抱歉没有直接链接到那些方法的链接。作为一个新用户,StackOverflow总是对我施加限制…)

再补充一下,NSMutableString有一个叫做appendFormat的方法,它在追加内容时很有帮助:

[str appendFormat:@"%@-%@-%@", @"1", @"2",@"3"]

将"1-2-3"附加到str

最新更新