将char附加到现有字符串Objective - C

时间:2011-04-19 02:55:07

标签: objective-c

我正在尝试追加并以编程方式动态修改NSString。我想知道几件事:

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

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

4 个答案:

答案 0 :(得分:7)

Nerver使用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对象是否有效,然后使用replaceCharactersInRange上的NSMutableString函数将字符集替换为字符串。

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

答案 1 :(得分:5)

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:)。

答案 2 :(得分:2)

首先要做的事情:

如果要修改字符串,则必须使用NSMutableString。 NSStrings无法修改,因此他们有一个可修改的伴侣。

然后,NSMutableString有两种方法可供您找到帮助:

replaceCharactersInRange:withString deleteCharactersInRange:

(很抱歉没有直接链接到这些方法的链接。如果总是对我作为新用户施加限制,则StackOverflow ...)。

答案 3 :(得分:2)

只需添加,NSMutableString有一个名为appendFormat的方法,在附加内容时会有很大的帮助:

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

会将“1-2-3”追加到str