用字母和符号填充

时间:2013-03-20 16:17:35

标签: javascript padding

我想知道如何使用非零的内容填充,主要是字母和标点符号。

我正在使用一个数据库来创建报告(基于数据库中的信息),然后可以将其导出到csv文件以在excel中使用。我注意到数据库和excel都丢弃了我们所拥有的数字中的任何前导零(每个报告中的一个东西是一个ID号,它是7位数,通常在前面会有零,如0123456或0012345)。

数据库允许使用javascript计算列,因此,根据我在本网站上找到的信息,我创建了一个计算列,并添加了一个脚本,用零填充数字,将其修复在数据库中但不在excel中。我希望做的是不仅用零填充它,而且用撇号填充它所以当导出到excel时它将显示为'0123456,它应该强制excel保持前导零(根据我发现的各种excel教程,添加数字前面的撇号将其切换为文本)。

到目前为止,添加适用于我的程序的前导零的两种方法是:

var x=PersonID;
var y="0000000";
(y + x).slice(-7);

其中PersonID拉出ID的文件

var str =PersonID;
var pad ="0000000";
(pad+str).slice(-7)

var n=PersonID;
("000000" + n).slice(-7);

然而,当我将“0000000”切换为“'0000000”或“\”0000000'(和-7到-8)时,它只会增加一个零!认为这是撇号的一个问题我试过“A0000000”,但它只是把A换成了另一个零。有没有办法用非数字信息填充数字?

对不起,这有点长,我只想提供有关我情况的所有信息。提前感谢任何知道解决方案的人:)

3 个答案:

答案 0 :(得分:0)

我认为这是因为当您切片时,您正在移除前面的字符,其中包括您的前导“A”或“'”。试试这个:

var str =PersonID;
var pad ="0000000";
"A" + (pad+str).slice(-7)

答案 1 :(得分:0)

如果你将一个角色放在打击垫的前面,那么鉴于你的ID可能至少有1个字符长,它将不可避免地被剥离。

var id = "A0000000123"
id.slice(-7); //id = 0000123

如果你想用0以外的任何东西填充,那就把它作为你的'pad'值;

var pad = "AAAAAAA";
var n = pad + PersonID; //123
var paddedId = n.slice(-7) //paddedId = "AAAA123"

也许你真正想要的是从你的垫子中取出前N个字符而不是最后一个N.

var pad = "A000000";
var PersonID = "123";
var toTake = pad.length - PersonID.length; //number of characters to take for the pad
var paddedId = pad.slice(0,toTake) + PersonID;// "A000123"

答案 2 :(得分:0)

如果您正在获取[Object object],则padPersonID是一个对象,您必须将其转换为字符串。一个简单的n.toString()应该可以解决这个问题,但我听到的(n+"")更快。

另外,只需将报告的列或行更改为文本格式而不是默认格式,通用格式也应该有所帮助。

我知道我迟到了,但希望这有助于某人!