首页 > 解决方案 > 根据最大长度将字符串切成块而不破坏单词

问题描述

我有一个字符串,我想将其分解为一个数组。

每个索引都需要有一个最大字母,比如 15 个字符。每个点都需要在单词结尾,最大字符不重叠(IE 在进入下一个单词之前会停在 28 个字符处)。

过去我已经能够使用正则表达式做类似的事情,但我正试图通过一个不喜欢正则表达式的在线平台来完成这项工作。

示例字符串:嗨,这是一个示例字符串,我想将其分解为一个数组!

期望的结果@ 15 char max:

  1. 嗨,这是一个
  2. 示例字符串
  3. 我会
  4. 喜欢打破
  5. 下降到一个
  6. 大批!

标签: javascriptarraysstring

解决方案


考虑到没有比最大限制更大的词

function splitString (n,str){
    let arr = str?.split(' ');
    let result=[]
    let subStr=arr[0]
    for(let i = 1; i < arr.length; i++){
        let word = arr[i]
        if(subStr.length + word.length + 1 <= n){
            subStr = subStr + ' ' + word
        }
        else{
            result.push(subStr);
            subStr = word
        }
    }
    if(subStr.length){result.push(subStr)}
    return result
}
console.log(splitString(15,'Hi this is a sample string that I would like to break down into an array!'))


推荐阅读