微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

GAS Slides 无法打印的字符删除未检测到带有问号的正方形 您可以使用 String.charCodeAt() 来尝试识别字符

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?