最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js中根据字数截取字符串,不能截断url_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:01:56
文档

js中根据字数截取字符串,不能截断url_javascript技巧

js中根据字数截取字符串,不能截断url_javascript技巧:今天收到个需求: 1,给一个文字,对输出的文字进行截取,保留400个字符 2,截取内容最后如果是url,保留完整url地址 3,添加省略号...... ---- 其中对url的保留比较麻烦,尤其是有两个相同url时不能采用indexOf获取其字符位置。 处理结果: 相关代码:
推荐度:
导读js中根据字数截取字符串,不能截断url_javascript技巧:今天收到个需求: 1,给一个文字,对输出的文字进行截取,保留400个字符 2,截取内容最后如果是url,保留完整url地址 3,添加省略号...... ---- 其中对url的保留比较麻烦,尤其是有两个相同url时不能采用indexOf获取其字符位置。 处理结果: 相关代码:


今天收到个需求:
1,给一个文字,对输出的文字进行截取,保留400个字符
2,截取内容最后如果是url,保留完整url地址
3,添加省略号......
----
其中对url的保留比较麻烦,尤其是有两个相同url时不能采用indexOf获取其字符位置。
处理结果:

相关代码:
代码如下:
String.prototype.sizeAt = function(){
var nLen = 0;
for(var i = 0, end = this.length; inLen += this.charCodeAt(i)>128?2:1;
}
return nLen;
};
String.prototype.cutStr = function(n, sCut){
if(this.sizeAt() <= n){
return this;
}
sCut = sCut || "";
var max = n-sCut.sizeAt();
var nLen = 0;
var s = this;
for(var i =0,end = this.length;inLen += this.charCodeAt(i)>128?2:1;
if(nLen>max){
s = this.slice(0,i);
s += sCut;
break;
}
}
return s.toString();
};
String.prototype.cutStrButUrl = function(n, sCut){
if(this.sizeAt() <=n){
return this.toString();
}
sCut = sCut || "";
var max = n-sCut.sizeAt();
var s = this;
//查找所有包含的url
var aUrl = s.match(/https?:\/\/[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+([-_A-Z0-9a-z\$\.\+\!\*\/,:;@&=\?\~\#\%]*)*/gi);
//当第max个字符刚好在url之间时,bCut会被设置为flase;
var bCut = true;
if(aUrl){
//对每个url进行判断
for(var i=0, endI = aUrl.length;ivar sUrl = aUrl[i];
//可能出现两个相同url的情况
var aP = s.split(sUrl);
var nCurr = 0;
var nLenURL = sUrl.sizeAt();
var sResult = "";
for(j = 0, endJ = aP.length; jnCurr +=aP[j].sizeAt();
sResult +=aP[j];
sResult += sUrl;
//当前字数相加少于max但添加url超过max:即会截到url
if(nCurr < max && nCurr + nLenURL>max){
s = sResult + sCut;
bCut = false;
break;
}
nCurr += nLenURL;
}
if(bCut === false){
break;
}
};
}
if(bCut){
s = s.cutStr(n, sCut);
}
return s.toString();
};
console.log('正常截取20个字符'.cutStrButUrl(20,'......'));
console.log('正常截取20个字符,但我超了'.cutStrButUrl(20,'......'));
console.log('有url的字符串http://www.baidu.com你能截取到吗?'.cutStrButUrl(20,'......'));
console.log('http://www.baidu.com有两个相同url的字符串http://www.baidu.com好吗?'.cutStrButUrl(51, '......'));

文档

js中根据字数截取字符串,不能截断url_javascript技巧

js中根据字数截取字符串,不能截断url_javascript技巧:今天收到个需求: 1,给一个文字,对输出的文字进行截取,保留400个字符 2,截取内容最后如果是url,保留完整url地址 3,添加省略号...... ---- 其中对url的保留比较麻烦,尤其是有两个相同url时不能采用indexOf获取其字符位置。 处理结果: 相关代码:
推荐度:
标签: 技巧 如何 js
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top