我想在每个第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("");
}
答案 0 :(得分:2)
如果您尝试格式化数字,而不是滚动自己的解决方案,则可以依赖JavaScript的内置功能:
var myNumber = '1000000';
var formattedNumber = Number(myNumber).toLocaleString();
console.log(formattedNumber); // "1,000,000"
&#13;
答案 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, '#'));