切之后的字符串n个字符,但如果它是在一个字的中间切开整个单词(Cut a string after

2019-07-29 13:47发布

我试图做一个JS的功能,经过n个字符切串 - 工程。 问题是,如果它在它看起来坏词的中间,所以我需要你的帮助,使其成为全切词,如果它是它的中间。

到目前为止我的代码:

if($('#desc').text().length > 505){
  str = $("#desc").text();
  $('#desc').text(str.substring(0, 505)).append('...');
}

PS

  • #desc是包含我的字符串股利。
  • 你可以使用jQuery。

Answer 1:

function cut(n) {
    return function textCutter(i, text) {
        var short = text.substr(0, n);
        if (/^\S/.test(text.substr(n)))
            return short.replace(/\s+\S*$/, "");
        return short;
    };
}
$('#desc').text(cut(505));


Answer 2:

lastIndexOf方法可以找到字符串中的最后一个空格字符,

和传递第二个参数设置的上限。

var cutat= string.lastIndexOf(' ',505);
if(cutat!=-1)string=string.substring(0,cutat)+'...';
//else the string is shorter than 505 (or has no spaces...)


Answer 3:

这是一个组合for循环 , charAt ,和对你认为是字分隔符那些测试性格的一种手段。 我将使用正则表达式为:

function splitString(str, index) {
  var delim = /\s|[,\.]/; // Put any other character you consider
                          // a non-word char in the brackets.
                          // The initial \s is any whitespace, so
                          // space, tab, newline, etc.
  var ch;
  var i;

  // Loop until we find a matching delimiter or we run out of string    
  for (i = index;
       i >= 0 && !delim.test(str.charAt(i));
       --i) {
    // No body
  }
  if (i < 0) {
    // No break before, split word in middle
    return index;
  }
  return i + 1;
}

活生生的例子 | 资源



Answer 4:

你可能想看看Cutter.js

Cutter.js是用于截断HTML代码来限制它的长度,由字编号,不失标记库。



Answer 5:

这个简单的功能将在任何情况下工作,再加上如果需要加3点:

function shortenString(source_string, max_length) {
    var short = source_string.substr(0, max_length);
    if (/^\S/.test(source_string.substr(max_length)))
        return short.replace(/\s+\S*$/, "") + '...';
    return short;
};

例:

var title = "This function will work in any situation";
var short = shortenString(title, 30);


Answer 6:

 var texte = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu magna at justo bibendum accumsan. Aliquam quam metus, hendrerit eget commodo at, sagittis eu lectus. Nunc quis purus urna. Etiam sollicitudin aliquam dui, vel rutrum ligula tincidunt id. In elementum ultricies ex ut bibendum. Proin ac purus id lorem pharetra commodo. Curabitur euismod commodo eleifend. Proin porttitor aliquet massa eu dapibus. Phasellus vitae tempor nibh. Donec venenatis ligula dui, at eleifend urna facilisis sed. Proin sollicitudin vehicula mi aliquam interdum. Quisque in erat purus. Ut ut ipsum nec odio mollis maximus. Vivamus nec ultricies mi, ut posuere augue.`; function cut(n,text) { if(n<text.length){ while(text[n] != " " && n>0){ n--; } return text.substr(0,n); }else{ return text; } } document.getElementById("result").innerHTML = cut(5,texte); 
 <p id="result"></p> 



Answer 7:

function cutAt(text, n) {
    if(text.length > n){
        for (; " .,".indexOf(text[n]) !== 0; n--){
        }
        return text.substr(0, n) + '...';
    }
    return text;
}
$('#desc').text(cutAt($('#desc').text(), 505));


文章来源: Cut a string after n characters, but if it's in the middle of a word cut the whole word