javascript - 模板文字插值破坏空白表

标签 javascript ecmascript-6 template-literals

使用模板文字时,我注意到表格格式存在问题。

当做这样的事情时:

var hello = 'Hello',
    bye = 'Goodbye';
console.log(`
    ${hello}    World
    ${bye}      World
`);

因为 {bye} 部分比 'Goodbye' 少了四个字母,所以字符串打印为:

    Hello    World
    Goodbye      World

对于数组或对象的插值,这变得更加复杂。

我想知道是否有人找到了解决此类问题的方法。插值期间可以保留字符串的间隔表格格式。

<小时/>

假设现在模板标签使用字符串和数组。数组通过单词之间的空格连接。

var hello = 'Hello',
    bye = 'Goodbye',
    phrase = ['I', 'like'];

console.log(someTag`
    ${hello}         World
    ${bye}           World
    Some things I like:
    ${phrase}        sunsets.
    ${['I', 'like']} candy.
`);

以防万一您无法告诉数组方括号、引号、美元、大括号等在插值之前计入字符串的长度(视觉上)。插值后单词之间的空格会计入字符串长度。缩进受到额外字符丢失和标记处理期间添加字符的影响。

这个问题有一个公认的答案,但我希望看到更多讨论。这个问题可能有多个答案。

最佳答案

您可以使用制表符来补偿单词长度的变化:

const hello = 'Hello';
const bye = 'Goodbye';
const str = `
    ${hello}\t World
    ${bye}\t World
`;

console.log(str);
document.getElementById('demo').innerText = str;
<pre id="demo"></pre>

关于javascript - 模板文字插值破坏空白表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215160/

相关文章:

javascript - 根据 getElementsByClassName 的返回值访问 classList 时出错

javascript - 结合 ES6 unicode 文字和 ES6 模板文字

typescript - 从字符串操作推断字符串文字类型

javascript - 图 DFS 运行时间慢

javascript - Javascript 中 IIFE 的作用域

javascript - Highcharttable.js 日期格式 x 轴

javascript - 如何从子模块访问父方法?

javascript - 在 JavaScript/ES6 中获取第二大日期

javascript - 删除属性在node.js中不起作用

javascript - 如何使用 ES6 模板文字定义 sessionStorage 键