JavaScript を使用して、文字列を後ろから 3 文字ごとに分割するにはどうすればよいですか?
言う、私はこれを持っています:
str = 9139328238
目的の関数の後、次のようになります。
parts = ['9','139','328','238']
これをエレガントに行うにはどうすればよいでしょうか。
JavaScript を使用して、文字列を後ろから 3 文字ごとに分割するにはどうすればよいですか?
言う、私はこれを持っています:
str = 9139328238
目的の関数の後、次のようになります。
parts = ['9','139','328','238']
これをエレガントに行うにはどうすればよいでしょうか。
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;
}
これを試して:
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
}
それが役に立てば幸い..
それほどエレガントではありませんが、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);
やっと良さそうです。これは、ループを使用せずに今まで得たものです
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