首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript:使用自动换行设置文本格式

JavaScript:使用自动换行设置文本格式
EN

Stack Overflow用户
提问于 2018-07-09 02:38:45
回答 1查看 49关注 0票数 1

我有一个记录器对象,它使用时间戳、发送者格式化日志消息,并将行的格式设置为最大长度为80个字符。

代码语言:javascript
复制
var paddedSender = message.Sender.padStart( 6 );
var string = `=-[ ${message.Timestamp} ][ ${paddedSender} ] `;
var remainingLength = this.CONSOLE_MAX_LENGTH - string.length - 3;

var lines = [];
var numLines = Math.ceil( message.Body.length / remainingLength );
for ( var i = 0, o = 0; i < numLines; i++ , o += remainingLength )
  lines.push( message.Body.substr( o, remainingLength ) );

string += lines.shift().padEnd( remainingLength ) + ' -=';
while ( lines.length > 0 )
  string += '\n'
    + '=-'
    + '-'.repeat( message.Timestamp.length + 4 )
    + '-'.repeat( paddedSender.length + 4 )
    + ` ${lines.shift().padEnd( remainingLength )} `
    + '-=';

return string;

这将产生类似于以下内容的输出:

代码语言:javascript
复制
================================================================================
=-[ 06/08 11:30:36 ][ SYSTEM ] Initializing...                                -=
=-[ 06/08 11:30:36 ][ SYSTEM ] Logger Initialized                             -=
=-[ 06/08 11:30:37 ][ SYSTEM ] WebService Initialized                         -=
=-[ 06/08 11:30:38 ][ WEBCLI ] API Returned 400 Bad Request(Endpoint: undefin -=
=----------------------------- ed) (Err: Invalid id)                          -=

到目前为止,它的行为符合预期。但是,我希望通过在空格之间开始换行来换行,而不是在达到字符限制时进行换行。

例如,我想要这样的信息:

代码语言:javascript
复制
=-[ 06/08 11:30:38 ][ WEBCLI ] API Returned 400 Bad Request(Endpoint: undefin -=
=----------------------------- ed) (Err: Invalid id)                          -=

要像这样格式化:

代码语言:javascript
复制
=-[ 06/08 11:30:38 ][ WEBCLI ] API Returned 400 Bad Request(Endpoint:         -=
=----------------------------- undefined) (Err: Invalid id)                   -=

我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-07-09 03:00:45

您可以获取文本并获取所需的size,并检查部分字符串的末尾位置是否为空格,然后拆分字符串并将其推送到长度调整的数组中。

代码语言:javascript
复制
var string = 'API Returned 400 Bad Request(Endpoint: undefined) (Err: Invalid id) Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.',
    size = 46,
    parts = [],
    start = 0,
    end;

while (start <= string.length) {
    end = start + size;
    if (end < string.length) while (string[end] !== ' ') --end;
    parts.push(string.slice(start, end).padEnd(size, ' '));
    start = end + 1;
}

console.log(parts);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51234997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档