我有一个包含两个相同文件路径的崇高文档(2条单独的行),如果我复制一个我的应用程序功能正常,如果我复制另一个我的应用程序功能正常,则不行。
当我选择一行并执行cmd + d时,按照正常功能,您会期望sublime突出显示这两行。它不是。在VC代码中也是如此,因此这两行有些不同。
我尝试了myData.toString() 我尝试了JSON.parse,但操作不顺利,我无法弄清楚
在违规行。
/Volumes/Macintosh HD/Archive/Work/AE_Scripting/Resources/CEP-Resources-master/CEP_8.x/Documentation
-Works
/Volumes/Macintosh HD/Archive/Work/AE_Scripting/Resources/CEP-Resources-master/CEP_8.x/Documentation
在上传本文的示例文件后,我现在有了一些新信息,如您在此处看到的
http://gravitystaging.com/uploadarea/test/examplefile.txt
两行现在都显示为
/Volumes/Macintosh HD/Archive/Work/AE_Scripting/â¨Resourcesâ©/â¨CEP-Resources-masterâ©/â¨CEP_8.xâ©/â¨Documentation
-Works
/Volumes/Macintosh HD/Archive/Work/AE_Scripting/Resources/CEP-Resources-master/CEP_8.x/Documentation
尽管在任何编辑器中它们看起来都是正常且相同的。因此,我该如何处理该字符串以将其删除。
答案 0 :(得分:1)
您的第一个字符串中包含一些Unicode双向标记字符:U + 2068和U + 2069。您可以在Python中使用ord
函数来检查以下内容:
>>> [ord(x) for x in '/Volumes/Macintosh HD/Archive/Work/AE_Scripting/Resources/CEP-Resources-master/CEP_8.x/Documentation']
[47, 86, 111, 108, 117, 109, 101, 115, 47, 77, 97, 99, 105, 110, 116, 111, 115, 104, 32, 72, 68, 47, 65, 114, 99, 104, 105, 118, 101, 47, 87, 111, 114, 107, 47, 65, 69, 95, 83, 99, 114, 105, 112, 116, 105, 110, 103, 47, 8296, 82, 101, 115, 111, 117, 114, 99, 101, 115, 8297, 47, 8296, 67, 69, 80, 45, 82, 101, 115, 111, 117, 114, 99, 101, 115, 45, 109, 97, 115, 116, 101, 114, 8297, 47, 8296, 67, 69, 80, 95, 56, 46, 120, 8297, 47, 8296, 68, 111, 99, 117, 109, 101, 110, 116, 97, 116, 105, 111, 110]
看到有8000左右的东西吗?这些是您不需要的Unicode标记。
如果您只想使用纯ASCII,这就是我在Python中的处理方式:
''.join(c for c in my_string if ord(c) < 256)
这会删除高于U + 00FF的所有内容。
答案 1 :(得分:0)
我建议您看看使用正则表达式删除所有非字母数字字符。
请参见https://stackoverflow.com/a/7225734/9899022
由于粘贴的文本和其他字符已经是字符串格式,因此尝试将其解析为JSON或调用.toString()不会更改变量的任何内容。
答案 2 :(得分:0)
如果您在(MacOS)bash终端中cat
进行文件操作,您将得到相同的行。运行encguess examplefile.txt
将告诉您格式为UTF-8。用UTF-8编码在SublimeText 3中打开它也将显示相同的行。
但是,如果您切换到 Western(Windows 1252)编码,则会得到与示例中完全相同的错误符号。所以我想您使用错误的编码来查看文件。
如何在SublimeText 3中切换编码: 文件=>使用编码重新打开=>选择您的编码(UTF-8)
修改
如果要从给定的字符串中删除错误的字符,可以使用String.replace()
。
str = "/Volumes/Macintosh HD/Archive/Work/AE_Scripting/â¨Resourcesâ©/â¨CEP-Resources-masterâ©/â¨CEP_8.xâ©/â¨Documentation"
console.log("Before: ", str);
str = str.replace(/(â©)|(â¨)/g, "");
console.log("After: ", str);
答案 3 :(得分:0)
我设法通过以下线程解决了这个问题
How to remove invalid UTF-8 characters from a JavaScript string?
function cleanString(input) {
var output = "";
for (var i=0; i<input.length; i++) {
if (input.charCodeAt(i) <= 127) {
output += input.charAt(i);
}
}
return output;
}
我很早就看过它,但是一定是使用不当。