如何将NSString附加到另一个NSString

obj*_*pro 25 objective-c nsstring

我在Objective C中比较新,但不是编程.我想知道如何将一个NSString附加到另一个NSString上.我正在创建一个用户必须完成基本句子的应用程序,我想知道如何获取用户输入的字符串并将其附加到屏幕上的当前字符串中?

Ank*_*kit 45

我想你正在寻找NSString的stringByAppendingString函数.请参阅下面的示例.

NSString *errorTag = @"Error: ";
NSString *errorString = @"premature end of file.";
NSString *errorMessage = [errorTag stringByAppendingString:errorString];
Run Code Online (Sandbox Code Playgroud)

生成字符串"错误:文件过早结束.".


Fog*_*ogh 36

这也可以通过使用NSMutableString来实现:

NSMutableString *string = [NSMutableString stringWithString:@"String 1"];
[string appendString:@"String 2"];
Run Code Online (Sandbox Code Playgroud)

  • 如果您想在同一个变量中附加数据(更多字符串),那么“NSMutableString”是实际的解决方案。当您想在同一变量中追加数据时,“stringByAppendingString”对内存不友好。 (2认同)

Imi*_*rak 13

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

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

NSString *complete = [NSString stringWithFormat:@"%@%@", sample1,
sample2];
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 5

您无法真正将一个NSString附加到另一个NSString,因为类NSString不可变.所有标准数据结构都具有可变和非可变变量(NSMutableString vs NSString,NSMutableArray vs NSArray等).如果要在不重新分配新对象的情况下更改内容,则需要使用可变版本.您可以使用以下命令重新创建新的NSString:

NSString* string3 = [NSString stringWithFormat:@"%@%@",string1,string2];
Run Code Online (Sandbox Code Playgroud)

这对性能有害,所以如果你要在一个循环或一些性能敏感区域(即你一遍又一遍地追加相同的字符串)这样做,这肯定会引起你的问题(我做了这个之前的错误).

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

NSMutableString* string1 = [NSMutableString alloc] init];
[string1 appendString:string2];
Run Code Online (Sandbox Code Playgroud)