📜  拆分除引号以外的空格 javascript (1)

📅  最后修改于: 2023-12-03 14:54:37.754000             🧑  作者: Mango

JavaScript中拆分除引号以外的空格

在JavaScript中,有时需要拆分一个字符串并移除除了引号以外的所有空格。这可以通过正则表达式和string对象的相关方法来实现。

方法一:使用正则表达式

使用正则表达式是一种比较直观简洁的方法,其基本原理是匹配所有引号内的内容,将其保留下来,再将其它空格删除。

const str = '拆分 除 "引号 内 的空 格"以外 的空格';
const arr = str.match(/('.*?'|".*?")|\S+/g).map(s => s.replace(/['"]/g, ''));
console.log(arr); // ["拆分", "除", "引号 内 的空 格", "以外", "的空格"]

上述代码中,正则表达式/('.*?'|".*?")|\S+/g用于匹配所有引号内的内容( '"开头且当前字符不是\的所有内容)或连续的非空白字符。匹配结果是一个数组,其中引号内的内容保留了引号,需要再对其进行去引号处理。

方法二:使用split()replace()

另一种方法是先将字符串根据引号进行拆分,再对引号内的空格和其它空格进行处理。

const str = '拆分 除 "引号 内 的空 格"以外 的空格';
const arr = str.split(/['"]/).map(s => {
  return s ? s.replace(/\s+/g, ' ') : '';
}).join('').trim().split(' ');
console.log(arr); // ["拆分", "除", "引号", "内", "的空", "格", "以外", "的空格"]

上述代码中,先使用正则表达式/['"]+/将字符串拆分成多个部分,其中引号内部分的位置保留了引号。“引号内部分”指的是以单引号或双引号包裹的部分,例如"引号内的空格"。之后,对每一个拆分得到的部分进行处理,将其中多余的空格替换为单个空格,之后将处理得到的字符串拼接在一起,并去掉首尾空格。最后,对结果字符串在非空白字符处分割成数组,就能得到想要的结果数组。

这种方法使用了split()replace()join()等常用的JavaScript字符串相关方法。

以上两种方法均可实现将除引号以外的空格拆分的功能。可以根据需要选择其中一种实现方法。