Javascript,将字符串剪切到长度以下,但仅限于特定点

Javascript,将字符串剪切到长度以下,但仅限于特定点,javascript,node.js,string,Javascript,Node.js,String,假设我有一个长字符串,每个部分都遵循以下格式: 我也有性格限制。我希望它只在空格处剪切字符串,但在我设置的字符限制下 输入示例: Input: <@756307474931515432> <@123891849950781999> <@935718581892734987> <@589058297589273488> Character Limit: 54 输入: 字符限制:54 与其在第54个字符处剪切,不如在中间的空格处剪切 Incorre

假设我有一个长字符串,每个部分都遵循以下格式:
我也有性格限制。我希望它只在空格处剪切字符串,但在我设置的字符限制下

输入示例:

Input: <@756307474931515432> <@123891849950781999> <@935718581892734987> <@589058297589273488>
Character Limit: 54
输入:
字符限制:54
与其在第54个字符处剪切,不如在中间的空格处剪切

Incorrect: <@756307474931515432> <@123891849950781999> <@93571858
Correct: <@756307474931515432> <@123891849950781999>

不正确:更新

由于您知道每个块的最后一个字符总是相同的,并且不会出现在块中的其他位置,您可以通过简单地检查剪切字符串是否以该字符结尾来解决此问题,而无需循环。如果没有拆分成数组,则删除最后一个元素并重新连接其余元素以返回正确剪切的字符串

let trimmed = src.substring(0,limit).trimEnd();

trimmed = trimmed.endsWith('>') ? trimmed : trimmed.split(' ').slice(0, -1).join(' ');
const src='';
常数限值=54;
//将字符串剪至所需长度,并在必要时修剪空白
//它正好在一个空格后剪断
设trimmed=src.substring(0,limit).trimEnd();
//如果字符串以“>”结尾,则结束
//否则,分割字符串,切掉最后一个元素,然后重新连接
trimmed=trimmed.endsWith('>')?修剪:修剪。分割(“”)。切片(0,-1)。连接(“”);

控制台日志(修剪)使用这样的函数

const src = '<@756307474931515432> <@123891849950781999> <@935718581892734987> <@589058297589273488>';
const limit = 54;

const limitText = src.substring(0,limit);
const subStr    = limitText.split(' ');
const finalString = subStr.reduce((res, s) => { 
      if (res.length + s.length < limit) {
        return res + ' ' + s;
      }
  return res;
  }, '');

console.log(finalString);
const src='';
常数限值=54;
const limitText=src.substring(0,limit);
const subStr=limitText.split(“”);
常量finalString=subStr.reduce((res,s)=>{
if(相对长度+相对长度<极限){
返回res+“”+s;
}
返回res;
}, '');
控制台日志(finalString);

实现我想要的功能的一种可能性是将字符串按空格分割(),然后循环遍历,如果下一部分低于字符限制,则只追加下一部分。。这就是解决方法。我刚刚想到了一个非循环解决方案,答案更新了。