簡體   English   中英

刪除不可打印的字符

[英]Removing non-printable character

好吧,所以我一直在這上面砸頭。

我正在導入由Indesign導出的XML文件。 這將對其進行解析,並根據輸入內容創建一個文件。 (我正在用Node構建一個JS應用程序)

該文件在我的PHPStorm IDE中看起來不錯。 但是,當我在gedit中打開它時,我到處都看到一些不需要的換行符。

我設法找到了這個字符: -> <- (確實存在-將其復制到某個位置,然后使用箭頭鍵將其移動到光標處。光標停留在中間)。

十六進制編輯器查看的該字符顯示為0x80 0xE2 0xA9

當我嘗試使用簡單的javascript替換替換它時;

data = data.replace(' ', ''); //There IS a character in the left one. Trust me.

我收到以下解析錯誤;

在此處輸入圖片說明

在vim中,該位置顯示以下字符; ~@

如何將其從輸出中刪除? 在JS代碼中轉義該字符會導致它可以正常編譯,但是奇怪的字符仍然存在。 我沒主意了。

您需要使用“ \\ u2029”作為搜索字符串。 您要替換的序列是InDesign插入的“段落分隔符” Unicode字符。

所以:

string.replace('\u2029', '');

而不是角色本身。

String.replace()不能完全按照您的想法工作。 您使用它的方式只會代替第一次出現:

> "abc abc abc".replace("a", "x");
'xbc abc abc'

您需要添加g (全局)標志,唯一的標准方法是使用正則表達式作為匹配項:

> "abc abc abc".replace(/a/g, "x");
'xbc xbc xbc'

您可以看一下Fastest方法來替換字符串中字符的所有實例,以獲取進一步的想法。


以UTF-8搜索0x80 0xE2 0xA9表示該字符不存在,但可能是0xE2 0x80 0xA9的錯誤鍵入 ,與Goran在他的答案中指出的“ PARAGRAPH SEPARATOR”(U + 2029)相對應。 只要您將所有工具集都正確配置為使用UTF-8,通常就不需要將奇異字符編碼為JavaScript \\ u ####引用,但是在這種情況下,JavaScript引擎會將其視為換行符,觸發語法錯誤,因為不允許在JavaScript字符串中使用換行符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM