10

JavaScript を使用して、文字列を後ろから 3 文字ごとに分割するにはどうすればよいですか?

言う、私はこれを持っています:

str = 9139328238

目的の関数の後、次のようになります。

parts = ['9','139','328','238']

これをエレガントに行うにはどうすればよいでしょうか。

4

8 に答える 8

20
var myString = String( 9139328238 );
console.log( myString.split( /(?=(?:...)*$)/ ) );
// ["9", "139", "328", "238"]

動作保証はできません。小さめの弦の場合は問題ないはずです。

ループの実装は次のとおりです。

function funkyStringSplit( s )
{
    var i = s.length % 3;
    var parts = i ? [ s.substr( 0, i ) ] : [];
    for( ; i < s.length ; i += 3 )
    {
        parts.push( s.substr( i, 3 ) );
    }
    return parts;
}
于 2013-02-07T13:09:57.357 に答える
0

これを試して:

var str = 9139328238 + ''; //convert int to string
var reqArr = []; // required array
var len = str.length; //maintaining length
while (len > 0) {
    len -= 3;
    reqArr.unshift(str.slice(len)); //inserting value to required array
    str = str.slice(0, len); //updating string
}

それが役に立てば幸い..

于 2013-02-07T13:39:01.570 に答える
0

それほどエレガントではありませんが、while ループを示しています

 function commaSeparateNumber (val) {
    val = val.toString();
    while (/(\d+)(\d{3})/.test(val)){
      val = val.replace(/(\d+)(\d{3})/, '$1'+','+'$2');
    }
    return val;
  }

  var str = "9139328238";
  var splitStr = commaSeparateNumber(str).split(",");
  console.log(splitStr);
于 2013-02-07T13:23:37.537 に答える
-2

やっと良さそうです。これは、ループを使用せずに今まで得たものです

function breakAt3(x)
    {
            if(x.length < 3){ var parts = [x]; return parts; }
        var startPos = (x.length % 3);
        var newStr = x.substr(startPos); 
        var remainingStr = x.substr(0,startPos); 

        var parts = newStr.match(/.{1,3}/g);
        if(remainingStr != ''){ var length = parts.unshift(remainingStr); }
        return parts;

    }

    var str = '92183213081';  
    var result = breakAt3(str);  // 92,183,213,081 
于 2013-02-07T13:29:53.177 に答える