2011-08-15 178 views
10

我是一个java的人过来Objective-C。在java中,一个变量添加到您不得不沿线的做一些事情的字符串:追加字符串变量

someString = "This string is equal to " + someNumber + "."; 

我无法弄清楚如何做到这一点在Objective-C虽然。我有一个NSMutableString,我想添加到字符串的中间。我如何去做这件事?

我已经试过:

NSString *someText = @"Lorem ipsum " + someMutableString; 
NSString *someText = @"Lorem ipsum " + [someMutableString stringForm]; 

和其他几样东西,其中没有一个似乎工作。还将+, s交换。

回答

27

您可以使用appendString:,但总体而言,我更喜欢:

NSString *someText = [NSString stringWithFormat: @"Lorem ipsum %@", someMutableString]; 
NSString *someString = [NSString stringWithFormat: @"This is string is equal to %d.", someInt]; 
NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %@.", someNSNumber]; 

,或者:

NSString *someOtherString = [NSString stringWithFormat: @"This is string is equal to %d.", [someNSNumber intValue]]; 

等等

这些字符串自动释放,所以要小心不要失去它们的价值。如有必要,请保留或复制它们,稍后再自行释放它们。

9

试试这个:

NSMutableString * string1 = [[NSMutableString alloc] initWithString:@"this is my string"]; 

[string1 appendString:@" with more strings attached"]; 

//release when done 
[string1 release]; 
6

您需要使用stringByAppendingString

NSString* string = [[NSString alloc] initWithString:@"some string"]; 
string = [string stringByAppendingString:@" Sweet!"]; 

当你当然做过不要忘记[string release];

+1

你的内存管理混乱了。这是由'alloc'创建的原始字符串,您需要释放,但是您将其丢弃(泄漏它)并将其替换为'stringByAppendingString:'的结果,该结果不应释放。 – Chuck

+0

我意识到我可能会被这里的内存管理所困惑,但是不是我的第二条语句指向同一块内存,我只是将值重新分配给现有值加上附加的字符串? – Trevor

+1

不,它是两个不同的存储位置的两个不同的对象。普通NSString不能改变它们的值,所以'stringByAppendingString:'返回一个新的字符串,其原始字符串的值加上附加值。 – Chuck

0
NSMutableString *string = [[NSMutableString alloc] init]; 

[string appendFormat:@"more text %@", object ];