使用jQuery / Regex替换子字符串中的最后一个匹配的字符



我知道这个问题与这个问题相似,如果被视为重复。

我要实现的结果是用 GALLERY-INFO

检查divs
$('.gallery-info').each(function() {
});

我设置了一个条件,如果每个DIV的字符计数大于140个字符,则返回子字符串。(Twitter)

$('.gallery-info').each(function() {
  var descLength = 140;
  var str = $(this).text();
  var patt = new RegExp(/[,;.:!()&s$]/g);
  if (str.length > descLength) {
   $(this).text(str.substr(0, descLength) + "...");
  } 
});

如果

substring的最后一个字符匹配 patt var。返回substring -1和Concat" ..."

其他

返回子字符串和concat" ..."

我一直对此有一个大脑放屁,我相信我可以在str.replace()和str.charat()的香草JS中实现这一目标,但是我需要在jQuery中这样做。

我认为使用以下条件更新您的条件应该很好。

  if (str.length > descLength) {
        if(patt.test(str[descLength-1])) {
          $(this).text(str.substr(0, descLength-1) + "...");
        } else {
          $(this).text(str.substr(0, descLength) + "...");     
        }
  }

codepen :https://codepen.io/azimjs/pen/mbqjny

我认为这是您所描述的。

$('.gallery-info').each(function() {
  var descLength = 140;
  var str = $(this).text();
  var patt = new RegExp(/[,;.:!()&s$]/g);
  if (str.length > descLength) {
    var substring = str.substr(0, descLength);
    var lastChar = substring[substring.length-1];
    if (lastChar.match(patt)) {
      $(this).text(str.substr(0, descLength -1) + "...");
    } else {
      $(this).text(str.substr(0, descLength) + "...");
    }
  }
});

codepen

https://codepen.io/foozie3moons/pen/gmobvw

最新更新