そのようにフォーマットされたアップロードされたファイルがあります
MR 1
MR 2
MR 100
MR 200
MR 300
等。
私がする必要があるのは、MR 10の前に200を追加し、MR10-99の前に0を1つ追加することです。
したがって、ファイルはフォーマットされます
MR 001
MR 010
MR 076
等。
どんな助けでも素晴らしいでしょう!
そのようにフォーマットされたアップロードされたファイルがあります
MR 1
MR 2
MR 100
MR 200
MR 300
等。
私がする必要があるのは、MR 10の前に200を追加し、MR10-99の前に0を1つ追加することです。
したがって、ファイルはフォーマットされます
MR 001
MR 010
MR 076
等。
どんな助けでも素晴らしいでしょう!
回答:
これらの値がいくつかの文字列に格納されていると仮定して、これを試してください。
function pad (str, max) {
str = str.toString();
return str.length < max ? pad("0" + str, max) : str;
}
pad("3", 3); // => "003"
pad("123", 3); // => "123"
pad("1234", 3); // => "1234"
var test = "MR 2";
var parts = test.split(" ");
parts[1] = pad(parts[1], 3);
parts.join(" "); // => "MR 002"
pad(85, 5)れpad("85", 5)ます。つまり、と同様に実行できます。return (str).toString().length < max ? pad("0" + (str).toString(), max) : (str).toString();
.toString()ます。私はそれがより良いと思いますfunction pad (str, max) { str=str.toString(); function main(str,max){ return str.length < max ? main("0" + str, max) : str; } return main(str,max); }
私は私が関連していると思う潜在的な解決策を持っています、私はそれについてここに投稿しました:
https://www.facebook.com/antimatterstudios/posts/10150752380719364
基本的に、2または3の最小長が必要です。このコードに入れる0の数を調整できます。
var d = new Date();
var h = ("0"+d.getHours()).slice(-2);
var m = ("0"+d.getMinutes()).slice(-2);
var s = ("0"+d.getSeconds()).slice(-2);
最小値として常に単一の整数を取得することはわかっていましたが(時間1、時間2が原因)、空の文字列以外のものを取得できるかどうか確信が持てない場合は、「000」+ d.getHours( )最小値を確実に取得するため。
それならあなたは3つの数字が欲しいですか?コードで-2ではなく-3を使用するだけです。これは、24時間制を非常に簡単に作成したかったためです。
注: 参照アップデート2を使用すると、最新のECMAScriptを使用している場合...
ここに、同様の質問への回答からその単純さのために私が気に入った解決策があります:
var n = 123
String('00000' + n).slice(-5); // returns 00123
('00000' + n).slice(-5); // returns 00123
@RWCが提案したように、もちろんこれを次のような汎用関数でうまくラップできます。
function leftPad(value, length) {
return ('0'.repeat(length) + value).slice(-length);
}
leftPad(123, 5); // returns 00123
そして、スライスが気に入らない人のために:
function leftPad(value, length) {
value = String(value);
length = length - value.length;
return ('0'.repeat(length) + value)
}
ただし、パフォーマンスが重要な場合は、提案されたソリューションの1つを選択する前に、リンクされた回答を読むことをお勧めします。
ES6では、StringクラスpadStartに、文字列に先頭文字を追加する組み込みメソッドが付属するようになりました。の参照については、ここでMDNを確認してくださいString.prototype.padStart()。また、padEnd文字を終了する方法もあります。
したがって、ES6では次のように簡単になりました。
var n = 123;
n.padStart(5, '0'); // returns 00123
function addLeadingZeros (n, length)
{
var str = (n > 0 ? n : -n) + "";
var zeros = "";
for (var i = length - str.length; i > 0; i--)
zeros += "0";
zeros += str;
return n >= 0 ? zeros : "-" + zeros;
}
//addLeadingZeros (1, 3) = "001"
//addLeadingZeros (12, 3) = "012"
//addLeadingZeros (123, 3) = "123"
これは、数値または文字列の前にゼロを追加するためにコードで一般的に使用する関数です。
入力は、文字列または数値(str)、および出力の目的の長さ(len)です。
var PrependZeros = function (str, len) {
if(typeof str === 'number' || Number(str)){
str = str.toString();
return (len - str.length > 0) ? new Array(len + 1 - str.length).join('0') + str: str;
}
else{
for(var i = 0,spl = str.split(' '); i < spl.length; spl[i] = (Number(spl[i])&& spl[i].length < len)?PrependZeros(spl[i],len):spl[i],str = (i == spl.length -1)?spl.join(' '):str,i++);
return str;
}
};
例:
PrependZeros('MR 3',3); // MR 003
PrependZeros('MR 23',3); // MR 023
PrependZeros('MR 123',3); // MR 123
PrependZeros('foo bar 23',3); // foo bar 023
スペースを分割する場合は、次のような単純な関数を使用して先行ゼロを追加できます。
function addZeros(n) {
return (n < 10)? '00' + n : (n < 100)? '0' + n : '' + n;
}
したがって、文字列の長さをテストし、それが6未満の場合は、スペースで分割し、数値にゼロを追加してから、結合し直すことができます。
または正規表現として:
function addZeros(s) {
return s.replace(/ (\d$)/,' 00$1').replace(/ (\d\d)$/,' 0$1');
}
誰かが2つではなく1つの交換でそれを行うことができると確信しています。
alert(addZeros('MR 3')); // MR 003
alert(addZeros('MR 23')); // MR 023
alert(addZeros('MR 123')); // MR 123
alert(addZeros('foo bar 23')); // foo bar 023
文字列の最後にある数字の前に1つまたは2つのゼロを置き、その前にスペースを置きます。スペースの前のビットは関係ありません。
ただ笑うためにそれを長く厄介な方法でやってください.... :(
注:私はこれを使用していません、そして私はこれを使用することをお勧めしません。!)
function pad(str, new_length) {
('00000000000000000000000000000000000000000000000000' + str).
substr((50 + str.toString().length) - new_length, new_length)
}
先日、自分でこのようなものが必要でした。常に0ではなくPudで、前面に何を埋めたいかを伝えたいと思っていました。これが私がコードのために思いついたものです:
function lpad(n, e, d) {
var o = ''; if(typeof(d) === 'undefined'){ d='0'; } if(typeof(e) === 'undefined'){ e=2; }
if(n.length < e){ for(var r=0; r < e - n.length; r++){ o += d; } o += n; } else { o=n; }
return o; }
ここで、nはパディングしたいもの、eはパディングしたい累乗(文字数)、dはパディングしたいものです。必要なものにはうまく機能しているようですが、「d」が1文字以上の場合は失敗する場合があります。
var str = "43215";
console.log("Before : \n string :"+str+"\n Length :"+str.length);
var max = 9;
while(str.length < max ){
str = "0" + str;
}
console.log("After : \n string :"+str+"\n Length :"+str.length);
それは私のために働いた!ゼロを増やすには、「max」変数を更新します
作業中のフィドルURL:jQueryを使用して数値の前にゼロを追加しますか?:
strは数値または文字列です。
formatting("hi",3);
function formatting(str,len)
{
return ("000000"+str).slice(-len);
}
大きな数字が必要な場合は、ゼロを追加します
以下を試してください。これにより、ゼロを前に付けて1桁および2桁の数値を3桁の数値に変換します。
var base_number = 2;
var zero_prefixed_string = ("000" + base_number).slice(-3);