无法操纵字符串?

时间:2011-10-14 23:37:01

标签: objective-c nsstring

NSString *string = @"HELLO";

出于某种原因,XCode不会自动完成删除字符或附加等方法...如果是这样的话,我怎么能从字符串中删除某些字符呢?说我想删除所有的L's。

2 个答案:

答案 0 :(得分:5)

NSString没有回应这些方法。 NSMutableString确实如此,但您已声明了一个不可变的字符串变量,并为其分配了一个字符串文字。由于Objective-C @"string literal"总是不可变的(NSString但不是NSMutableString的实例),所以这些消息无法发送到您正在使用的对象。

如果你想要一个可变的字符串,请尝试:

NSMutableString *mutableString = [[@"HELLO" mutableCopy] autorelease];

答案 1 :(得分:1)

这是一个不可变的字符串文字。

这是一篇很好的帖子,详细解释了它:

What's the difference between a string constant and a string literal?

关于你如何更改它并删除Ls的问题:

NSString *hello = @"HELLO";
NSString *subString = [hello stringByReplacingOccurrencesOfString:@"L" withString:@""];
NSLog(@"subString: %@", subString);

输出“HEO”

或者你可以通过创建像Jonathan提到的可变字符串的副本来创建NSMutableString。在这两个示例中,您都将其复制到非文字字符串中。