【问题标题】:Javascript insert space at nth position in stringJavascript在字符串的第n个位置插入空格
【发布时间】:2020-08-27 14:19:14
【问题描述】:

假设我有以下字符串:“Stackoverflow”,我想在每三个数字之间插入一个空格,如下所示:“S tac kov erf low”从末尾开始。这可以用正则表达式完成吗?

我现在用 for 循环通过以下方式完成了它:

var splitChars = (inputString: string) => {
    let ret = [];
    let counter = 0;
    for(let i = inputString.length; i >= 0;  i --) {
       if(counter < 4) ret.unshift(inputString.charAt(i));
       if(counter > 3){
        ret.unshift(" ");
        counter = 0;
        ret.unshift(inputString.charAt(i));
        counter ++;
       } 
       counter ++;
    }
    return ret;
}

我可以通过某种方式缩短它吗?

【问题讨论】:

    标签: javascript string


    【解决方案1】:

    您可以积极向前看并添加空格。

    console.log("StackOverflow".replace(/.{1,3}(?=(.{3})+$)/g, '$&amp; '));

    【讨论】:

    • 我能问一下+ 在你的正则表达式中的作用吗?我将其解释为“采取行动”(.{3})。如果是这样,我认为 (.{3})+ 的意思是“寻找”..................(基本上是 . 的 3 倍数)。
    • 是的,它是后面字符的量词,直到字符串结束。
    • 谢谢。我花了一段时间才得到它,因为我们正在“向后”工作! IE。如果工作是在每三个字符(从左到右)之后放置一个空格,那会更容易,对吧?
    【解决方案2】:

    您可以使用正则表达式将其分块,然后用字符串将其重新连接在一起。

    var string = "StackOverflow";
    var chunk_size = 3;
    var insert = ' ';
    
    // Reverse it so you can start at the end
    string = string.split('').reverse().join('');
    
    // Create a regex to split the string
    const regex = new RegExp('.{1,' + chunk_size + '}', 'g');
    
    // Chunk up the string and rejoin it
    string = string.match(regex).join(insert);
    
    // Reverse it again
    string = string.split('').reverse().join('');
    
    console.log(string);

    【讨论】:

      【解决方案3】:

      这是一个没有正则表达式的解决方案,带有 for...of

      <!DOCTYPE html>
      <html>
      <body>
      
      <script>
      const x="Stackoverflow",result=[];
      let remaind = x.length %3 , ind=0 , val;
      
      for(const i of x){
      val = (++ind % 3 === remaind) ? i+" " : i; 
      result.push(val); 
      }
      
      console.log(result.join(''));
      </script>
      
      </body>
      </html>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-25
        • 1970-01-01
        • 1970-01-01
        • 2019-07-31
        • 2018-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多