我有几千行要加载到使用 Pentaho 的数据库中。我必须将字符串值长度保持在 4 个字符。源文件可能只有一个字符,但仍需要将长度保持在 4 个字符以保持数据库的一致性。
示例:
来源:10
数据库预期结果:0010
我在字符串转换中使用替换,或者可以使用 java 表达式,任何一个都可以。请使用任一方法(Regex 或 Javascript 表达式)提供帮助并提供解决方案。
谢谢,
我有几千行要加载到使用 Pentaho 的数据库中。我必须将字符串值长度保持在 4 个字符。源文件可能只有一个字符,但仍需要将长度保持在 4 个字符以保持数据库的一致性。
示例:
来源:10
数据库预期结果:0010
我在字符串转换中使用替换,或者可以使用 java 表达式,任何一个都可以。请使用任一方法(Regex 或 Javascript 表达式)提供帮助并提供解决方案。
谢谢,
在 Java 中,您可以使用String.format(...)
格式说明符将您的数字用零填充到 4 位:
String.format("%04d", yournumber);
在 Javascript 中,您可以使用sprintf(...
) 来完成相同的任务:
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)
(如果你的意思是 Javascript):
var str = "10";
function padIt(s) {
s = ""+s;
while (s.length < 4) {
s = "0" + s;
}
return s;
}
console.log(padIt(str));
对于数字的任意填充,在 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)