撤消 split('').join(' '); 的优雅解决方案;

Dar*_*_we 3 javascript string split

我想知道是否有一个优雅的解决方案来撤销这个字符串操作:

'hello world'.split('').join(' '); // result: 'h e l l o   w o r l d'
Run Code Online (Sandbox Code Playgroud)

在我看来,我当前的解决方案并不像插入空格的代码(上面的代码)那样优雅。它确实有效,但我可以做得更好吗?

let spaces = 'h e l l o   w o r l d'.split('  ');
let r = '';
for (let i = 0, len = spaces.length; i < len; ++i) {
    r += spaces[i].split(' ').join('');
    if (i != len - 1) {
        r += ' ';
    }
}
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

您可以使用正则表达式匹配任何后跟空格的字符,并仅替换为该字符:

console.log(
  'h e l l o   w o r l d'
    .replace(/(.) /g, '$1')
);
Run Code Online (Sandbox Code Playgroud)

  • (.) - 匹配任意字符,将其放入第一个捕获组
  • - 匹配文字空间
  • '$1' - 替换为第一个捕获组的内容

您不必担心输入字符串中的多个连续空格会弄乱逻辑,因为2 个字符的每个子序列都会一一匹配,并且保证每第二个字符都是由.join(除了字符串末尾的最后一个字符,它不会被正则表达式匹配)。