Regex表达式w/set长度

Regex expression w/ set length

本文关键字:set 长度 表达式 Regex      更新时间:2023-09-26

我有数千行正在使用Pentaho加载到数据库中。我必须将字符串值的长度保持在4个字符。源文件可能只有一个字符,但仍需要将长度保持在4个字符,以保持数据库中的一致性。

示例:
来源:10
数据库预期结果:0010

我使用的是字符串中的替换转换,或者可以使用java表达式,只要一个表达式有效。请使用任一方法(Regex或Javascript表达式)提供帮助并提供解决方案。

谢谢,

在Java中,您可以使用带有格式说明符的String.format(...)来将数字填充为0到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));

http://jsfiddle.net/EzqRM/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)