Javascript:每隔n个字符串插入一个字符

时间:2016-07-20 17:01:41

标签: javascript function

我想在每个第n个索引中在字符串中插入一个字符。基本上只是将数字格式化为1000到1,000或100,0

这是我到目前为止所拥有的。尝试了一些变化,但这是我得到的最接近。我错过了什么?

这是一个带有正在使用的函数的jsFiddle的链接: https://jsfiddle.net/djlerman/t0ug5msv/

// function to insert value at specific index
function addCharacter(str, character, index, from) {
  // convert the str to an array
  var strArray = str.split("");

  // loop through array
  for (var i = 0; i < str.length; i++) {
    // find array index matching index and insert character
    if(i % index == 0) {
      strArray.splice(i + 1, 0, character);
    }
  }

  return strArray.join("");
}

3 个答案:

答案 0 :(得分:2)

如果您尝试格式化数字,而不是滚动自己的解决方案,则可以依赖JavaScript的内置功能:

&#13;
&#13;
var myNumber = '1000000';
var formattedNumber = Number(myNumber).toLocaleString();

console.log(formattedNumber); // "1,000,000"
&#13;
&#13;
&#13;

Docs for Number.prototype.toLocaleString().

答案 1 :(得分:1)

不使用正则表达式或内置格式化函数:

function addCharacter(str, character, index, from) {
    // Split string
    var strArray = str.split("")

    // New array to push into. splicing will cause problems with indexes.
    var _array = [];

    // Flip array to start from the opposite side
    if (from === 'right') { strArray.reverse(); }

    // Loop through string
    for (var i = 0; i < str.length; i++) {

        // Always push the next character
        _array.push(strArray[i]);

        // Mod index should be 0
        // Current index should not be 0
        // and don't add a character at the end
        if ((i + 1) % index === 0 && i != 0 && (i + 1) < str.length) {
            _array.push(character);
        }
    }

    // _array will be reversed because strArray was reversed so flip it back
    if (from === 'right') { _array.reverse(); }

    // return the new array!
    return _array.join("");
}

答案 2 :(得分:0)

您可以使用正则表达式并插入想要的刺痛。

function beautify(s, n, v) {
    return s.replace(new RegExp('.{' + n + '}(?=.)', 'g'), '$&' + v);
}

console.log(beautify('12345678', 3, '#'));