GAS Slides 无法打印的字符删除未检测到带有问号的方块
GAS Slides unprintable character removal not detecting square with question mark in it
我正在为 Google 个幻灯片创建 Table 个目录。我已经解决了很多问题,但我找到的一张幻灯片(其他人的)导致目录 Table 中的文本条目看似空白。如果我将条目复制到记事本中,它看起来像一个带有问号的正方形。我在多个地方读过这是一个不可打印的字符。我想在目录 Table 中包含所有可打印字符,无论它们使用何种语言。我还想保留商标和版权符号等内容。我希望有些人会在他们的幻灯片中包含表情符号,但我还没有测试过。如果他们通过 Table 中可见的内容,那将是很好的。
这些是我尝试删除不可打印字符的内容。我的神秘角色通关了。
let beforeTxt = txtBack;
txtBack = beforeTxt.replace(/[^0-9a-z\u0600-\u06FF]/gi, " "); // reserves Arabic characters
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
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: ; ", beforeTxt);
beforeTxt = txtBack;
txtBack = beforeTxt.replace("[^\x00-\x7F]/", "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);
我做错了吗?人们在幻灯片上可能包含的愚蠢事物的数量没有限制。我想要的是内容 Table 中的文本可见。
您可以使用 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)," ");
如果这些代码不正确,您可以尝试使用链接的维基百科文章中的其他替换字符。
来源
我正在为 Google 个幻灯片创建 Table 个目录。我已经解决了很多问题,但我找到的一张幻灯片(其他人的)导致目录 Table 中的文本条目看似空白。如果我将条目复制到记事本中,它看起来像一个带有问号的正方形。我在多个地方读过这是一个不可打印的字符。我想在目录 Table 中包含所有可打印字符,无论它们使用何种语言。我还想保留商标和版权符号等内容。我希望有些人会在他们的幻灯片中包含表情符号,但我还没有测试过。如果他们通过 Table 中可见的内容,那将是很好的。
这些是我尝试删除不可打印字符的内容。我的神秘角色通关了。
let beforeTxt = txtBack;
txtBack = beforeTxt.replace(/[^0-9a-z\u0600-\u06FF]/gi, " "); // reserves Arabic characters
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
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: ; ", beforeTxt);
beforeTxt = txtBack;
txtBack = beforeTxt.replace("[^\x00-\x7F]/", "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);
我做错了吗?人们在幻灯片上可能包含的愚蠢事物的数量没有限制。我想要的是内容 Table 中的文本可见。
您可以使用 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)," ");
如果这些代码不正确,您可以尝试使用链接的维基百科文章中的其他替换字符。
来源