2011-08-15 73 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 ];