首页 文章

按长度分解字符串,保留单词

提问于
浏览
0

使用javascript,我想要打破单词 . 例如,我目前正在使用此处列出的方法Split large string in n-size chunks in JavaScript

var dialog_array = dialog_to_load.match(/.{1,80}/g);

问题是,从第76个字符开始到第84个字符结束的单词将被分成两半 . 是否有一些时髦的正则表达式或代码来防止这种情况?

为了澄清,我能够编写一个小函数来实现这一点,我只是想知道是否有一个干净,更时尚的方式 .

该字符串将具有任意长度和内容,但这是一个请求的示例:

Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua . Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat . Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur . Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum .

2 回答

  • 2

    如何使用例如 /.{1,80}\b/g 尊重字边界?

  • 0

    你可以使用这个正则表达式:

    /\S.{1,79}(?=$|\s)/g
    

    \S 确保一行以非空格开头 . 因此, .{1,79} 中的计数需要少一个 . 通过前瞻 (?= 确保匹配在前方有空白区域或字符串末尾( $ )时停止 .

    当与 match() 一起使用时,您可以获得所需的行,并在发生换行的位置删除空格 .

    下面的代码段使用50作为宽度而不是80,所以它渲染得很好:

    var s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
    var res = s.match(/\S.{1,49}(?=$|\s)/g);
    console.log(res);
    
    .as-console-wrapper { max-height: 100% !important; top: 0; }
    

相关问题