Замена одиночной кавычки Javascript игнорируется

Я пишу файл сценария Photoshop Javascript. Во всех смыслах и целях этот скрипт при запуске копирует определенный текстовый слой несколько раз. Если исходный текстовый слой содержит апостроф, реплицированные экземпляры заменяют апостроф квадратным блоком. Таким образом, "It's" становится "It[]s" (очевидно, не квадратные скобки, а квадратный блок).

Вот код:

titleLayer = al.textItem.contents;

newTitleLayer = titleLayer.replace("'", "\'");
alert(newTitleLayer); // At this point, this works:  "It's"

persistentSetting.putData(0,newTitleLayer);
app.putCustomOptions("text_contents4",persistentSetting,true);

alert(persistentSetting.getData(0)); // At this point, it does not.  It shows the square. "It[]s"

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

Спасибо.


person Gary Simon    schedule 26.03.2013    source источник
comment
Почему вы заменяете апостроф на апостроф? Правильно ли он выводится, если вы вообще опускаете замену?   -  person Bergi    schedule 26.03.2013
comment
у вас есть реальный пример страницы для нас? Можете ли вы воспроизвести это с помощью jsfiddle? Потому что это больше похоже на ошибку кодировки символов.   -  person Kevkong    schedule 26.03.2013


Ответы (2)


Я думаю, ты хочешь

newTitleLayer = titleLayer.replace(/'/g, "\\'");
//                                 ^^^^   ^
//    regex to match *all* apostrohpes     escape the backslash
person Bergi    schedule 26.03.2013
comment
К сожалению, это по-прежнему вызывает ту же проблему, что и здесь: i.imgur.com/qiQ4nnZ.png - person Gary Simon; 26.03.2013

Что в итоге сработало для меня:

persistingSetting.getData(0).replace("EM", "'"); // На самом деле это не EM, но это небольшой код, который JS показывает в моем редакторе, когда я скопировал и вставил этот специальный символ блока [].

Спасибо за помощь.

person Gary Simon    schedule 26.03.2013