Ярлыки в Objective-C для объединения строк NSS - PullRequest
1090 голосов
/ 04 февраля 2009

Есть ли какие-либо ярлыки для (stringByAppendingString:) конкатенации строк в Objective-C или ярлыки для работы с NSString в целом?

Например, я хотел бы сделать:

NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];

что-то вроде:

string myString = "This";
string test = myString + " is just a test";

Ответы [ 30 ]

13 голосов
/ 10 июня 2010
NSString *label1 = @"Process Name: ";
NSString *label2 = @"Process Id: ";
NSString *processName = [[NSProcessInfo processInfo] processName];
NSString *processID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
NSString *testConcat = [NSString stringWithFormat:@"%@ %@ %@ %@", label1, processName, label2, processID];
10 голосов
/ 30 августа 2012

Вот простой способ, используя новый синтаксис массива:

NSString * s = [@[@"one ", @"two ", @"three"] componentsJoinedByString:@""];
                  ^^^^^^^ create array ^^^^^
                                               ^^^^^^^ concatenate ^^^^^
9 голосов
/ 01 августа 2013
NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];

Спустя пару лет использования Objective C я думаю, что это лучший способ работать с Objective C для достижения того, чего вы пытаетесь достичь.

Начните вводить «N» в приложении Xcode, и оно автоматически заполняется до «NSString». введите "str", и он автоматически завершится до "stringByAppendingString". Таким образом, нажатия клавиш весьма ограничены.

Как только вы научитесь нажимать клавишу «@» и вкладывать процесс написания читаемого кода, проблема больше не станет. Это просто вопрос адаптации.

8 голосов
/ 04 февраля 2009

Единственный способ сделать c = [a stringByAppendingString: b] короче - это использовать автозаполнение в точке st. Оператор + является частью C, которая не знает об объектах Objective-C.

8 голосов
/ 04 июля 2012

Как насчет сокращения stringByAppendingString и использования # define :

#define and stringByAppendingString

Таким образом, вы будете использовать:

NSString* myString = [@"Hello " and @"world"];

Проблема в том, что он работает только для двух строк, вам необходимо заключить дополнительные скобки для добавления:

NSString* myString = [[@"Hello" and: @" world"] and: @" again"];
8 голосов
/ 29 апреля 2013
NSString *result=[NSString stringWithFormat:@"%@ %@", @"Hello", @"World"];
7 голосов
/ 20 июня 2009
NSString *label1 = @"Process Name: ";
NSString *label2 = @"Process Id: ";
NSString *processName = [[NSProcessInfo processInfo] processName];
NSString *processID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
NSString *testConcat = [NSString stringWithFormat:@"%@ %@ %@ %@", label1, processName, label2, processID];
6 голосов
/ 11 мая 2013

Я попробовал этот код. это работает для меня.

NSMutableString * myString=[[NSMutableString alloc]init];
myString=[myString stringByAppendingString:@"first value"];
myString=[myString stringByAppendingString:@"second string"];
6 голосов
/ 07 апреля 2014

Пробовал следующее в lldb панели

[NSString stringWithFormat:@"%@/%@/%@", three, two, one];

какие ошибки.

вместо этого используйте alloc и initWithFormat метод:

[[NSString alloc] initWithFormat:@"%@/%@/%@", @"three", @"two", @"one"];
4 голосов
/ 20 января 2016
NSNumber *lat = [NSNumber numberWithDouble:destinationMapView.camera.target.latitude];
NSNumber *lon = [NSNumber numberWithDouble:destinationMapView.camera.target.longitude];
NSString *DesconCatenated = [NSString stringWithFormat:@"%@|%@",lat,lon];
...