簡體   English   中英

JavaScript如何從字符串中刪除所有未引用的空格

[英]JavaScript how to remove all unquoted spaces from a string

假設你在JavaScript中有以下字符串: unquoted string\\n "quoted string". 如何刪除不在雙引號內的所有空格(不包括換行符)(可能使用.replace方法和一些正則表達式)?

編輯:

我正在制作一個從文本文件中讀取關卡的游戲。 因此,為了更容易地從級別代碼中讀取,我試圖刪除除引號內的所有空格。 我可以嘗試: levelString.replace(' ', '') ,但這將刪除所有空格,包括引號內的空格。

一種選擇是預先檢查剩余引號的數量是否為偶數 - 這意味着當前空間不在引號內:

[ ]+(?=[^"]*(?:"[^"]*"[^"]*)*$)

替換為空字符串。 這假設沒有引號的轉義機制。

請注意,這不是很有效。 使用舊式for循環並跟蹤引號內/外引號的腳本可以更快地完成工作。

您還可以使用更簡單的replace正則表達式,並在回調函數中使用標志來了解您是否在引號內/外:

 function removeSpaces(s) { let inside = 0; return s.replace(/ +|"/g, m => m === '"' ? (inside ^= 1, '"') : inside ? m : ''); } const result = removeSpaces('"this is inside" and this is outside. "back in again".'); console.log(result); 

replace正則表達式可以匹配引用的字符串和空格。 然后使用replace函數根據需要返回空字符串或帶引號的字符串:

 function removeSpaces(s) { return s.replace(/("[^"]*")|([ \\t]+)/g, (x) => { return x.charCodeAt(0) == 34 ? x : "" ; }) } const result = removeSpaces('"this is inside" and this is outside. "back in again".'); console.log(result); 

暫無
暫無

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

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