Javascript 列格式字符串

发布于 2024-10-03 03:25:40 字数 207 浏览 3 评论 0原文

虽然我在 C 和 Java 中使用过它,但我忘记了获取占位符以在文本输出上创建列的基本输出方法:

Oakenshield     Thorin
Baggins         Bilbo
Gray, the       Gandalf

那么,一旦知道了这个函数,我在哪里可以找到一个独立的库来在 Javascript 中执行此操作?

Although I've worked with it in C and Java, I forget the basic output method for getting placeholders to make columns on a text output:

Oakenshield     Thorin
Baggins         Bilbo
Gray, the       Gandalf

Then, once this function is known, where can I find a standalone library to do it in Javascript?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叹沉浮 2024-10-10 03:25:40

您的意思是 sprintf()宽度格式说明符 (例如%20d)?如果是这样,Javascript sprintf确实是您的答案。

Do you mean sprintf()'s width format specifier (e.g. %20d)? If so, Javascript sprintf is indeed your answer.

赢得她心 2024-10-10 03:25:40

我是怎么做的

var data = [["Oakenshield", "Thorin"], ["Baggins", "Bilbo"], ["Gray, the", "Gandalf"]];
var display = document.querySelectorAll("[id^=display]");

Library:
    var pads = (x,len,z=" ") => (x + Array(len).fill(z).join("")).slice(0,len);
    var padn = (x,len,z=0,base) => 
        (Array(len).fill(z).join("") + x.toString(base)).slice(-len);
    var sprintf = (str, ...argv) => !argv.length ? str : 
        sprintf(str = str.replace(sprintf.token||"$", argv.shift()), ...argv);

Demo1:
    var f = item => sprintf("$\n", pads(item[0],16), pads(item[1],16));
    display[0].innerHTML = data.map(f).join("");

Demo2:
    var f = (item,i) => sprintf("$ $ $ $\n", 
        padn(i,4), padn(item[1],6," "), pads(item[0],9), padn(i,4,0,2));
    display[1].innerHTML = data.map(f).join("");
<b>Demo 1:</b><pre id="display1" style="margin-top: 0"></pre>
<b>Demo 2:</b><pre id="display2" style="margin-top: 0"></pre>

How I do it

var data = [["Oakenshield", "Thorin"], ["Baggins", "Bilbo"], ["Gray, the", "Gandalf"]];
var display = document.querySelectorAll("[id^=display]");

Library:
    var pads = (x,len,z=" ") => (x + Array(len).fill(z).join("")).slice(0,len);
    var padn = (x,len,z=0,base) => 
        (Array(len).fill(z).join("") + x.toString(base)).slice(-len);
    var sprintf = (str, ...argv) => !argv.length ? str : 
        sprintf(str = str.replace(sprintf.token||"$", argv.shift()), ...argv);

Demo1:
    var f = item => sprintf("$\n", pads(item[0],16), pads(item[1],16));
    display[0].innerHTML = data.map(f).join("");

Demo2:
    var f = (item,i) => sprintf("$ $ $ $\n", 
        padn(i,4), padn(item[1],6," "), pads(item[0],9), padn(i,4,0,2));
    display[1].innerHTML = data.map(f).join("");
<b>Demo 1:</b><pre id="display1" style="margin-top: 0"></pre>
<b>Demo 2:</b><pre id="display2" style="margin-top: 0"></pre>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文