如何将一个NSString追加到另一个NSString后面

29

我对Objective C相对陌生,但对编程并不陌生。我想知道如何将一个NSString添加到另一个NSString上。我正在制作一个应用程序,在该应用程序中,用户必须完成一个基本句子,我想知道如何获取用户输入的字符串并将其附加到当前显示在屏幕上的字符串上?

4个回答

49

我认为你正在寻找NSString的stringByAppendingString函数。 请参考下面的示例。

NSString *errorTag = @"Error: ";
NSString *errorString = @"premature end of file.";
NSString *errorMessage = [errorTag stringByAppendingString:errorString];

生成字符串“Error: premature end of file.”。


42

也可以使用NSMutableString来实现:

NSMutableString *string = [NSMutableString stringWithString:@"String 1"];
[string appendString:@"String 2"];

2
如果您想在同一变量中添加数据(更多字符串),那么NSMutableString是实际解决方案。当您想要在同一变量中追加数据时,stringByAppendingString不太友好于内存。 - Ans

14

看起来你已经有了答案,但你也可以使用stringWithFormat:方法,像这样:

NSString *sample1 = @"Hello"; 
NSString *sample2 = @"Being appended";

NSString *complete = [NSString stringWithFormat:@"%@%@", sample1,
sample2];

6

你无法真正将一个NSString添加到另一个NSString中,因为NSString类是不可变的。所有标准数据结构都有可变和不可变的变体(NSMutableString vs NSString、NSMutableArray vs NSArray等)。如果您想在不重新分配新对象的情况下更改内容,则需要使用可变版本。您可以使用以下方式重新创建一个新的NSString:

NSString* string3 = [NSString stringWithFormat:@"%@%@",string1,string2];

虽然这样做可以达到效果,但对性能的影响不好,所以如果你打算在循环或一些对性能敏感的区域中执行此操作(即你会一遍又一遍地追加到同一个字符串),这肯定会给你带来问题(我以前犯过这个错误)。

相反,你应该使用NSMutableString并将第二个字符串附加到它:

NSMutableString* string1 = [NSMutableString alloc] init];
[string1 appendString:string2];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接