2016-07-20 23 views
0

n番目のインデックスごとに文字列に文字を挿入します。基本的に1000から1,000までの数値を書式設定するか、または100,0Javascript:文字を文字列ごとに挿入します。

これはこれまでのものです。いくつかのバリエーションを試しましたが、これは私が得た最も近いものです。私は何が欠けていますか?ここで

は、使用中の機能を備えた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

、(I%インデックス== 0) は、0%を忘れてはいけない場合すべての番号が0なので、最初の文字をスプライスします – Ediruth

答えて

2

あなたが番号をフォーマットしようとするのではなく、独自のソリューションを展開していた場合、あなたはJavaScriptをの内蔵に頼ることができます機能:

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

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

Docs for Number.prototype.toLocaleString().

+0

これは完全に機能しました。ありがとうございました!!! https://jsfiddle.net/djlerman/q73j1hoe/ –

0

正規表現を使用して、目的の刺し傷を挿入することができます。正規表現を使用して、または組み込み関数をフォーマットせずに

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

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

+0

数字の書式は右から左です。文字列の反対側から数字の書式が始まります。 –

+0

それについての質問はかなり不明です。 –

+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(""); 
} 
関連する問題