我正在尝试使用 JS - textItem.contents 从 Photoshop 中的 LayerKind.TEXT 艺术图层中提取文本。在我试图提取的字符串中有一个撇号之前,它工作得很好。每次在字符串中找到撇号时,它都会返回这个特殊字符 �。
有没有办法阻止这种情况发生或找到那个特殊字符并用撇号(单引号)替换?从我读过的一篇文章中,海报使用了 .replace("EM", "'"),但这似乎对我不起作用。
谢谢!
我正在尝试使用 JS - textItem.contents 从 Photoshop 中的 LayerKind.TEXT 艺术图层中提取文本。在我试图提取的字符串中有一个撇号之前,它工作得很好。每次在字符串中找到撇号时,它都会返回这个特殊字符 �。
有没有办法阻止这种情况发生或找到那个特殊字符并用撇号(单引号)替换?从我读过的一篇文章中,海报使用了 .replace("EM", "'"),但这似乎对我不起作用。
谢谢!
快速检查一下:您是否在撇号中使用了转义斜线?你确定它是撇号(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;
}