如何解决GAS Slides 无法打印的字符删除未检测到带有问号的正方形 您可以使用 String.charCodeAt() 来尝试识别字符
我正在为 Google 幻灯片创建目录。我已经解决了很多问题,但是我发现的一张幻灯片(其他人的)导致目录中出现了一个看似空白的文本条目。如果我将条目复制到记事本中,它看起来像一个带有问号的正方形。我在多个地方读过这是一个不可打印的字符。我想在目录中包含所有可打印的字符,无论它们使用什么语言。我还想保留商标和版权符号等内容。我希望有些人会在他们的幻灯片中包含表情符号,但我还没有测试过。如果它们通过在目录中可见就可以了。
let beforeTxt = txtBack;
txtBack = beforeTxt.replace(/[^0-9a-z\u0600-\u06FF]/gi," "); // reserves arabic characters https://stackoverflow.com/questions/9364400/remove-not-alphanumeric-characters-from-string
if (beforeTxt != txtBack)
console.log("1 + + + + + + + hidden char in text: ; ",beforeTxt);
beforeTxt = txtBack;
txtBack = beforeTxt.replace("/[^0-9a-z\u0600-\u06FF]/gi"," "); // reserves arabic characters https://stackoverflow.com/questions/9364400/remove-not-alphanumeric-characters-from-string
if (beforeTxt != txtBack)
console.log("2 + + + + + + + hidden char in text: ; ",beforeTxt);
beforeTxt = txtBack;
txtBack = beforeTxt.replace("[^\x00-\x7F]/"," "); // replace unprintable char with space
if (beforeTxt != txtBack)
console.log("3 + + + + + + + hidden char in text: ; ","gi"," "); // replace unprintable char with space
if (beforeTxt != txtBack)
console.log("4 + + + + + + + hidden char in text: ; ",beforeTxt);
beforeTxt = txtBack;
// this invisible character looks like a question mark in a Box if copied into notepad
txtBack = beforeTxt.replace(""," "); // replace unprintable char with space
if (beforeTxt != txtBack)
console.log("5 + + + + + + + hidden char in text: ; ",beforeTxt);
我做错了吗?人们可能在幻灯片中包含的愚蠢内容的数量没有限制。我想要的是目录中的文本可见。
解决方法
您可以使用 String.charCodeAt()
来尝试识别字符。
因此,如果您知道角色的位置,您可以:
// you already have a variable "stringWithUnknownChar"
let unknownChar = stringWithUnknownChar[5] // if the char is at index 5
let unknownCharCode = stringWithUnknownChar.charCodeAt(5)
这是假设您无法找出原始角色是什么,对吗?
如果源已经包含这个 Unicode block 那么它可能丢失了原始字符编码,因为“未知字符”被呈现为 U+FFFx
而不管它是什么,所以,当你复制它,你只是复制“未知字符”的代码。
如果是这种情况,那么不幸的是,没有办法渲染这个角色,因为没有提到它是什么。
编辑:
根据您的评论,您可能会检查不同的替换字符并找出 JavaScript 中与它们对应的字符代码,以便您可以按照上面开始处理的方式将它们过滤掉。例如
console.log("�".charCodeAt(0)) // gives 65533
console.log("?".charCodeAt(0)) // gives 56319
那么你可以这样做:
let txtBack = beforeTxt.replace(String.fromCharCode(65533)," ");
如果这些代码不正确,您可以尝试使用链接的维基百科文章中的其他替换字符。
来源
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。