2013-03-26 5 views
1

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

Вот код (явно не скобки, а квадратный блок.):

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" 

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

Спасибо.

+0

Почему вы заменяете апостроф апострофом? Правильно ли это выводится, если вы вообще опустите замену? – Bergi

+0

Вы используете для нас настоящую страницу с образцами? Можете ли вы воспроизвести это с помощью jsfiddle? Потому что это больше похоже на ошибку кодирования символов. – Kevkong

ответ

0

Я думаю, что вы хотите

newTitleLayer = titleLayer.replace(/'/g, "\\'"); 
//         ^^^^ ^
// regex to match *all* apostrohpes  escape the backslash 
+0

К сожалению, это все равно дает мне такую ​​же проблему, как здесь: http://i.imgur.com/qiQ4nnZ.png –

0

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

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

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