0

Pentaho を使用してデータベースにロードしている数千の行があります。文字列値の長さを 4 文字に保つ必要があります。ソース ファイルには 1 文字しかない場合がありますが、データベース内の一貫性を維持するために、長さを 4 文字に保つ必要があります。

例:
ソース: 10
データベースの期待される結果: 0010

文字列変換で置換を使用しているか、いずれかが機能する Java 式を使用できます。いずれかの方法 (正規表現または Javascript 式) を使用して解決策を提供してください。

ありがとう、

4

3 に答える 3

4

Javaでは、フォーマット指定子を使用String.format(...)して、数値に0から4桁の数字を埋め込むことができます。

String.format("%04d", yournumber);

sprintf(...Javascriptでは、同じタスクに)を使用できます。

var s = sprintf("%04d", yournumber);

したがって、明らかsprintf()に標準のJavascriptではありませんが、必要に応じてダウンロードできるライブラリです。ただし、4桁を取得するには、いつでもこれを行うことができます。

// take the last 4 digits from the right
var s = String("0000" + yournumber).slice(-4); 

そして、これを実際に単純な左パディング関数に変えることができます。

String.prototype.leftPad = function(paddingValue, paddingLength) {
   return (new Array(paddingLength + 1).join(paddingValue) + this).slice(-paddingLength);
};

var s = String(yournumber).leftPad("0", 4)
于 2013-02-18T18:50:08.377 に答える
1

数字の任意のパディングについては、javascriptで:

// padLeft(
//   number to pad
//   length to pad to
//   character to pad with[optional, uses 0's if not specified]
// )
function padLeft(num, pad, padchr) {
    num = "" + num;
    pad = (pad || num.length) + 1;
    return (num.length < pad ? new Array(pad - num.length).join(padchr || "0") : "") + num;
}

// returns "0010"
var input = 10
padded = padLeft(input, 4) 
于 2013-02-18T18:55:36.347 に答える
1

(Javascriptを意味する場合):

var str = "10";
function padIt(s) {
    s = ""+s;
    while (s.length < 4) {
        s = "0" + s;
    }
    return s;
}
console.log(padIt(str));

http://jsfiddle.net/EzqRM/1/

于 2013-02-18T18:49:49.030 に答える