0

我想知道如何用不是零的东西来填充,主要是字母和标点符号。

我正在使用创建报告(基于数据库中的信息)的数据库,然后可以将其导出到 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 切换为另一个零。有没有办法用非数字信息填充数字?

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

4

3 回答 3

0

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

var str =PersonID;
var pad ="0000000";
"A" + (pad+str).slice(-7)
于 2013-03-20T16:31:06.887 回答
0

如果你把一个字符放在垫子的前面,那么它不可避免地会被剥离,因为你的 ID 可能至少有 1 个字符长。

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

如果您想用 0 以外的任何值填充,那么只需将其设为您的“填充”值;

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"
于 2013-03-20T16:32:31.993 回答
0

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

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

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

于 2018-02-05T20:12:01.153 回答