Конкатенация NSString и NSMutableString - PullRequest
2 голосов
/ 22 ноября 2011

У меня есть три строки (a NSString, NSMutableString и другая NSString), которые мне нужно объединить в изменяемую строку, в этом порядке, чтобы отобразить в качестве источника для UIWebView.Исходя из PHP / JavaScript / HTML фона, мои знания о конкатенации в значительной степени таковы:

var concatenatedString = string1 + string2 + string3;

Я предполагаю, что такого рода вещи не будут работать в Objective-C, поэтому мне интересно, какпродолжайте правильно собирать их все вместе.

Чтобы немного настроить это, первая строка (NSString) - это элемент заголовка и холста веб-страницы, вторая строка (NSMutableString)это javascript из текстового поля, которое пользователь может определить для управления элементом canvas, а третья строка (NSString) - это конечные теги веб-страницы.

Кроме того, вместо первоначального создания NSMutableString Должен ли я просто ссылаться на UITextView.text, чтобы получить текст пользователя при конкатенации всего объекта, или я должен сначала извлечь текст из UITextView?

Ответы [ 3 ]

6 голосов
/ 22 ноября 2011
NSMutableString *concatenatedString = [[NSString stringWithFormat:@"%@%@%@", string1, string2, string3] mutableCopy];
3 голосов
/ 22 ноября 2011

Два других ответа верны в том смысле, что они отвечают на вопрос так, как вы его задали. Но по вашему описанию того, что вы хотите сделать, есть гораздо более простой способ. Используйте формат.

Если предположить, что string1 и string3 всегда будут одинаковыми, и только string2 изменится, то есть то, что вы делаете, вы можете написать что-то вроде этого.

static NSString *formatString = @"String1Text%@String3Text";
NSString *completeString = [NSString stringWithFormat:formatString,self.myTextFieldName.text];
NSLog(@"%@",completeString);

%@ в формате говорит, что нужно вставить описание объекта в следующем формате (описание NSString - это stringValue.) Предполагая, что у вас есть UITextField с именем myTextFieldName, который в настоящее время содержит текст 'String2Text' Тогда это будет вывод:

String1TextString2TextString3Text

Таким образом вы создаете только 1 экземпляр формата NSString для всего класса, независимо от того, сколько раз вы вызываете этот код.

Для меня это звучит так, как будто вам вообще не нужна изменяемая строка. Не стесняйтесь оставлять комментарии, если я что-то не так понял.

Ответ на комментарий:

Я не уверен, как вы реализуете "шаги, чтобы проверить его снова", но, скажем, у вас есть кнопка с именем 'testJavaScript'. Метод IBAction, связанный с этой кнопкой, будет содержать первые две строки. Таким образом, каждый раз, когда вы нажимаете кнопку, создается новая отформатированная строка NSString, заполненная текущим содержимым текстового поля. Как только эта строка была сформирована, ее нельзя было изменить. Но это не будет иметь значения, так как в следующий раз получится еще один.

1 голос
/ 22 ноября 2011
NSString *concatenatedString = [string1 stringByAppendingFormat:@"%@%@", string2, string3];

Вы можете сделать результирующую строку изменяемой (если вам действительно нужно), добавив mutableCopy, как показано в ответе @ Vinnie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...