5

我正在使用以下代码来包装长文本,用户在文本区域中输入以进行评论:

function addNewlines(comments) {
  var result = '';
  while ($.trim(comments).length > 0) {

    result += comments.substring(0,70) + '\n';
    comments = comments.substring(70);
  }
  return result;
}

问题显示在下面的屏幕截图中。关于如何解决它的任何想法?我们可以使用lastindexof(" ")方法获取子字符串中的最后一个空格来从逻辑上解决这个问题吗?任何人都可以调整这个小代码以使其正确吗?

输出截图

4

8 回答 8

2

我相信用 CSS 包装文本是一个更好的解决方案,但是这里有一个链接可能会有所帮助wrap-text-in-javascript

顺便说一句,我记得也有一个用于包装文本的 JQuery 插件谷歌它。

于 2013-04-22T07:12:01.437 回答
1

尝试其中之一:

  1. word-wrap:no-wrap;
  2. word-wrap: break-word

它可能会解决你的问题

于 2013-04-22T07:01:30.633 回答
1

word-wrap: break-word在 CSS 中尝试。浏览器(甚至 IE 5.5+)很好地支持
该属性。 更多信息:https ://developer.mozilla.org/en-US/docs/CSS/word-wrap 示例用法:FIDDLEword-wrap

于 2013-04-22T07:03:46.250 回答
1

上面的那些只有 99% 的时间有效。这是唯一对我有用的 100%: http: //locutus.io/php/strings/wordwrap/

于 2016-10-29T23:04:51.813 回答
0

嗨,只需在文本区域上应用一些 CSS,例如

style="word-wrap: break-word;" 
于 2013-04-22T07:03:40.870 回答
0

我有同样的问题,我使用下面的函数解决了它。

function wordWrap(message, lineSize, breakPoint){
    let wordsArr = message.split(" "),
        wordsLen = wordsArr.length,
        finalMsg = "",
        linesArr = [""],
        currLine = 0;

    for(let i=0; i< wordsLen; i++){
        if(linesArr[currLine].length + wordsArr[i].length > lineSize){
            currLine +=1;
            linesArr[currLine] = wordsArr[i] + " ";
        } else {
            linesArr[currLine] += wordsArr[i] + " ";
        }
    }
    let linesLen = linesArr.length;
    for(let i=0; i<linesLen; i++){
        finalMsg += linesArr[i] + breakPoint;
    }
    return finalMsg.trim();
}

希望这可以帮助。

于 2018-06-11T12:34:39.067 回答
0

我使用这个 css 代码在 Torch 浏览器中显示,它可以工作

我试过word-wrap:break-word;overflow:ellipsis;......等等,但没有奏效。

#xxx{

 width: 750px;
 word-break: break-word;

}
于 2016-11-12T04:29:22.687 回答
0

在寻找使用正则表达式和其他实现的完美解决方案之后。我决定纠正我自己的。它并不完美,但对我的情况来说效果很好,当你的所有文本都是大写时,它可能无法正常工作。

function breakTextNicely(text, limit, breakpoints) {

  var parts = text.split(' ');
  var lines = [];
  text = parts[0];
  parts.shift();

  while (parts.length > 0) {
    var newText = `${text} ${parts[0]}`;

    if (newText.length > limit) {
      lines.push(`${text}\n`);
      breakpoints--;

      if (breakpoints === 0) {
        lines.push(parts.join(' '));
        break;
      } else {
      	text = parts[0];
	  }
    } else {
      text = newText;
    }
	  parts.shift();
  }

  if (lines.length === 0) {
    return text;
  } else {
    return lines.join('');
  }
}

var mytext = 'this is my long text that you can break into multiple line sizes';
console.log( breakTextNicely(mytext, 20, 3) );

于 2017-09-01T16:50:18.210 回答