2013-02-21 1 views
0

Я новичок в программировании. У меня есть строка NSString *string = @"\U0420\U043e\U0437\U044b"; и после каждой косой черты ('\') Мне нужно поставить еще одну косую черту, чтобы получить такую ​​строку @"\\U0420\\U043e\\U0437\\U044b"Как поместить строку в строку после определенной строки

Я новичок в программировании и объективе-c. пожалуйста помоги.

+0

Непонятно, что вы хотите, поскольку эти строки одинаковы? – trojanfoe

+0

Извините, я только что исправил – Asike

ответ

3

Мой первоначальный ответ был:

Использование [NSString stringByReplacingOccurrencesOfString:withString:] (reference).

NSString *string = @"\U0420\U043e\U0437\U044b"; 
NSString *converted = [string stringByReplacingOccurrencesOfString:@"\\" 
                 withString:@"\\\\\\"]; 

Однако сейчас я не думаю, что это верно, учитывая \ символы не будет на самом деле существуют в string; вместо этого компилятор преобразует каждую из этих последовательностей в символ Юникода. Вам нужно будет кодировать string как это:

NSString *string = @"\\U0420\\U043e\\U0437\\U044b"; 

Для того, чтобы использовать код выше. Я не вижу никакой альтернативы этому.

Дальнейшее обновление: Часто, когда я сталкивался с такими вопросами, возникает путаница между строковыми литералами и строковыми данными. В вашем вопросе те символы \ не будут отображаться, поскольку компилятор преобразует их в символы Юникода (\Uxxx - это escape-последовательность юникода для одного символа). Однако, если вы предоставили такую ​​строку во время выполнения (скажем, прочитайте из текстового файла), тогда будут существовать те символы \, и вы можете использовать приведенный выше код.

+0

, но я не могу этого сделать, потому что json дает мне это как «\ U0420 \ U043e \ U0437 \ U044b», и мне нужно преобразовать его в русские буквы. я попытался преобразовать его с помощью [NSString stringWithCString: [строка cStringUsingEncoding: NSUTF8StringEncoding] кодирование: NSNonLossyASCIIStringEncoding], но этот метод принимает строку как "\\ U0420 \\ U043e \\ U0437 \\ U044b" (с двойной слэш) – Asike

+0

@Asike Как вы проверяете, что JSON дает вам эту строку? Если эти символы косой черты фактически существуют в строке, вам нужно будет сделать больше, чем просто добавить косые черты. Я также сомневаюсь, что 'stringWithCString' будет делать то, что вы хотите. – trojanfoe

+0

Кажется, что мне нужно что-то сделать с NSJSONSerialization, но в любом случае спасибо – Asike

Смежные вопросы