Ошибка при извлечении апострофа из 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;
}
Другие вопросы по тегам