如何在控制台的一行中将两个多行字符串放在一起?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在控制台的一行中将两个多行字符串放在一起?相关的知识,希望对你有一定的参考价值。
我正在尝试使用文本艺术数字制作动态javascript数字时钟。由于数字是文本艺术,因此它们是多行字符串,并且在登录到控制台时显示在彼此的顶部。示例如下。
let time0 =`
a8888a
d8' ..8b
88 .P 88
88 d' 88
Y8'' .8P
Y8888P`
let time1 =`
d88
88
88
88
88
d88P`
我希望输出例如是下午12:03:52。在文本艺术中,但它是在这样的另一种类型之上
1
2
:
...
答案
您可以将所有字母合并为一个大块:
function mergeDigits(...digits) {
const result = [];
for(const digit of digits) {
for(const [index, row] of digit.split("\n").entries())
result[index] = (result[index] || "") + row + " ".repeat(10 - row.length);
}
return result.join("\n");
}
console.log(mergeDigits(time0, time1));
另一答案
我的方法是通过qazxs在换行符(split
)上将字符串转换为数组,然后一次记录一行:
\n
另一答案
我建议创建一个连接数字的函数,这里有一个例子:
let time0 =`
a8888a
d8' ..8b
88 .P 88
88 d' 88
Y8'' .8P
Y8888P `.split('\n')
let time1 =`
d88
88
88
88
88
d88P`.split('\n')
for (let i = 1; i < time0.length; i++) {
console.log(time0[i] + ' ' + time1[i]);
}
另一答案
我会建议这个功能。它会查找图案的高度,每个图案中每条线的宽度,以确保正确的对齐:
let time0 =`
a8888a
d8' ..8b
88 .P 88
88 d' 88
Y8'' .8P
Y8888P `;
let time1 =`
d88
88
88
88
88
d88P`;
function concat(number1, number2) {
var parts1 = number1.split('\n');
var parts2 = number2.split('\n');
var result = [];
parts1.forEach((line, index)=>{
var line2 = parts2[index] || '';
result.push(line + ' ' + line2);
});
return result.join('\n');
}
var result = concat(time0, time1);
console.log(result)
另一答案
此版本以字符映射和要在它们之间放置的空格数开始,并返回一个函数,该函数接受一个字符串,将其拆分为字符并从中创建组合的文本艺术字符串。请注意,它并不关心字符是什么。它不会进行任何错误检查以确保所有字符都存在,并且它们的高度相同。这并不难添加。
function joinPatterns(...args) {
const patterns = args.map(pat => pat.split(/[\n\r]+/));
const widths = patterns.map(lines => Math.max(...lines.map(line => line.length)));
const length = Math.max(...patterns.map(lines => lines.length));
return Array.from({length}, (_, i) =>
patterns.map((lines, j) => (lines[i]||"").padEnd(widths[j], " ")).join(" ")
).join("\n");
}
let time0 =`
a8888a
d8' ..8b
88 .P 88
88 d' 88
Y8'' .8P
Y8888P`
let time1 =`
d88
88
88
88
88
d88P`
const res = joinPatterns(time0, time1, time0);
console.log(res);
以上是关于如何在控制台的一行中将两个多行字符串放在一起?的主要内容,如果未能解决你的问题,请参考以下文章