2013-08-30 3 views
0

Я пытаюсь извлечь текст из слоя LayerKind.TEXT в Photoshop, используя JS - textItem.contents. Он работает очень хорошо, пока у меня нет апострофа в строке, которую я пытаюсь извлечь. Он возвращает этот специальный символ , каждый раз, когда апостроф находится в строке.Ошибка с извлечением апострофа из textItem.Contents

Есть ли способ остановить это от того, чтобы найти этот особый символ и заменить его апострофом (одинарная кавычка)? С одного поста, который я читал, плакат использовал .replace («EM», «»), но это, похоже, не работает для меня.

Спасибо!

ответ

1

Просто быстрая проверка: Использовали ли вы слэш для апострофа? Вы уверены, что это апостроф (U + 0027), а не правильный одиночный кавычек (U + 2019); Я получаю их смешанными все время

Anyhoo, скрипт здесь перейдет по всем слоям и заменит апостроф пустой строкой - замените строку-заменитель на то, что вы хотите. Это должно помочь вам.

// 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; 
} 
+0

Спасибо, что отлично поработал! – hotshotiguana