鉴于以下代码有效:
for (i=0; i<nLinears; i++) {
for (j=0; j<nLinearPts[i]-1; j++) {
$wb.upLinearLoad.append('<div>' + sprintf("%5s%8.1f to%7.1f%8.1f"
,sLinearSegName[i][j],fLinearPtBA[i][j],fLinearPtBA[i][j+1],fLen)
.replace(/ /g," "));
}
}
这确保了当数字从较小(更多前导空格)变为较大(较少前导空格)时,将保持列间距。但是,据我所知,使用.replace的正则表达式效率不高,而且由于我在整个应用程序中都有这种结构,所以我需要让它尽可能快地运行。
我相信jQuery .text()会照顾我的需要,但我还需要.append().text()结果,我无法弄清楚如何让它们一起工作。
任何建议都将不胜感激。
答案 0 :(得分:0)
您可以put these in <pre>
elements而不是重复字符串替换
。
这将(通常)使用固定宽度的字体格式化它们并保留空格而无需任何额外的工作。 <pre>
用于预先格式化的文本,这对您所拥有的内容有意义。
如果这不能很好地完成并且你需要替代方案,你可以check out this question about how to use pre-formatted text in different contexts。
答案 1 :(得分:0)
您可以更新sprintf()
函数,以便首先输出不间断的空格。
但是你真的发现了使用正则表达式.replace()
的性能问题吗?我不认为你会有问题。鉴于您似乎有表格数据,为什么不使用<table>
?这就是表的用途。
答案 2 :(得分:0)
我查看了sprintf(),发现一个简单的单语句更改产生了我需要的东西:
pad_character = ' ';
感谢sprintf()实现的作者使用有意义的变量名。