JavaScript 如何从字符串中删除所有未加引号的空格

标签 javascript regex

假设您在 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);

关于JavaScript 如何从字符串中删除所有未加引号的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48631763/

相关文章:

regex - 使用 perl 表达式批量重命名文件

javascript - 如何计算字符串中出现的字符串?

javascript - 如何在正则表达式中包含一次点作为最后一个字符?

javascript - 在javascript中获取UTC时区的时间戳

javascript - 使用 web-audio-api 的变调器?

javascript - 有什么方法可以自动增加 firebase 中的字段

php - 如何从 PHP 中的括号之间获取所有内容?

regex - PowerShell删除下一行的正则表达式字符串

regex - Powershell 和正则表达式变量

javascript - Google Apps 脚本正在将我的数组更改为字符串。为什么?