【问题标题】:how to remove more than one space between two words of string in angular?如何在角度字符串的两个单词之间删除一个以上的空格?
【发布时间】:2019-05-04 12:44:32
【问题描述】:

this.folderObj.folderName 是字符串,我打印该字符串aaa aaaconsole,我使用trim() 但它只删除前后空格,如何删除两个字符串单词之间的多个空格并想要像这样输出aaa aaa

  folderObj : Folder = new Folder();

  console.log(this.folderObj.folderName.trim());  // aaa         aaa

我想要的预期控制台

console.log(this.folderObj.folderName.trim())  // aaa aaa

【问题讨论】:

    标签: javascript html css angular


    【解决方案1】:

    使用正则表达式匹配两个或多个空格字符,并替换为单个空格:

    const folderName = '    aaa         aaa';
    console.log(
      folderName
        .replace(/ {2,}/g, ' ')
        .trim()
    );

    当然,你也可以用+匹配一个或多个空格字符,代码看起来会更好,但效率会稍微低一些:

    const folderName = '    aaa         aaa';
    console.log(
      folderName
        .replace(/ +/g, ' ')
        .trim()
    );

    【讨论】:

      【解决方案2】:

      尝试使用replace() 将所有单个和多个空格替换为单个空格。

      this.folderObj.folderName.trim().replace(/ +/g, ' ');
      

      演示:

      console.log('aaa         aaa'.replace(/ +/, ' '))

      【讨论】:

        【解决方案3】:

        let folderName = '      abcd       xya   ';
        console.log(folderName.replace(/\s+/g, ' ').trim());

        【讨论】:

          【解决方案4】:

          const folderName = "    aaa         aaa";
          
          let resultStr = folderName
            .trim()
            .split(' ')
            .filter(item => item.length > 0)
            .join(' ');
          
          console.log(resultStr);

          【讨论】: