Экранирование обратной косой черты в вызове метода stringByReplacingOccurferencesOfString Не работает в Objective C - PullRequest
1 голос
/ 02 ноября 2009

Эта строка кода не дает ожидаемого результата.

NSString *tmpstoryTitle2 = [tmpstoryTitle stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

Я пытаюсь изменить строку следующим образом:

Привет, "это" моя строка.

до

привет, \ "this \" это моя строка.

С кодом выше. Однако вывод, который я получаю:

привет, \\ "this \\" это моя строка.

Если я удаляю \\ из строки поиска \\ "для замены \", я получаю вывод:

привет, "это" моя строка.

Что верно, но я не могу добавить \ infront моего "с escape-последовательностью \\ для обратной косой черты и \" для двойных кавычек.

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Как вы проверяете строку? Если вы распечатаете его на консоль (используя NSLog ()), эти ведущие обратные косые черты будут вставлены для вас; попробуйте установить для него текст UILabel и посмотреть, будет ли он отображаться таким образом. Ваш код выглядит правильно.

1 голос
/ 02 ноября 2009

Вы уверены, что исходная строка ( tmpstoryTitle ) уже не содержит косую черту? Я только что попробовал

NSString * tmpstoryTitle = [[NSString alloc] initWithString: @"hello, \"this\" is my string."];
NSString * tmpstoryTitle2 = [tmpstoryTitle stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
NSLog(@"%@", tmpstoryTitle);
NSLog(@"%@", tmpstoryTitle2);

И он производит:

2009-11-02 22:32:40.756 JezzBall[71173:207] hello, "this" is my string.
2009-11-02 22:32:40.767 JezzBall[71173:207] hello, \"this\" is my string.

Что похоже на то, что вы ожидаете?

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