Ошибка при извлечении апострофа из textItem.Contents
Я пытаюсь извлечь текст из художественного слоя LayerKind.TEXT в Photoshop, используя JS - textItem.contents. Это работает очень хорошо, пока у меня не будет апострофа в строке, которую я пытаюсь извлечь. Он возвращает этот специальный символ каждый раз, когда в строке обнаруживается апостроф.
Есть ли способ предотвратить это или найти этот специальный символ и заменить его апострофом (одинарная кавычка)? Из одного поста, который я прочитал, постер использовал.replace("EM", "'"), но это, похоже, не работает для меня.
Спасибо!
1 ответ
Просто быстрая проверка: использовали ли вы запасную черту для апострофа? Вы уверены, что это апостроф (U+0027), а не правильная одинарная кавычка (U+2019); Я их все время путаю
В любом случае, сценарий будет проходить через все слои и заменять апостроф пустой строкой - измените строку замены на то, что вы хотите. Это должно помочь вам в этом.
// call the source document
var srcDoc = app.activeDocument;
var numOfLayers = srcDoc.layers.length;
// main loop starts here
for (var i = numOfLayers -1; i >= 0; i--)
{
var tempLayer = srcDoc.layers[i]
reName = justGetFontContents(tempLayer);
}//end loop
// function JUST GET FONT CONTENTS (layer)
// --------------------------------------------------------
function justGetFontContents(alayer)
{
if (alayer.kind == 'LayerKind.TEXT')
{
//alert(alayer.name + " " + alayer.textItem.contents)
var c = replaceApostrophe(alayer.textItem.contents)
alert("reName = " + c)
alayer.textItem.contents = c
}
return c
}
// function REPLACE APOSTROPHE WITH NOTHING (text string)
// --------------------------------------------------------
function replaceApostrophe(string)
{
var niceString = string.replace(/[\']/g, "");
return niceString;
}