首頁 web前端 js教程 js中根据字数截取字符串,不能截断url_javascript技巧

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

May 16, 2016 pm 05:57 PM
url 截取字串

今天收到个需求:
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() 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() 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){
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, '......'));
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP函數介紹—get_headers(): 取得URL的回應頭訊息 PHP函數介紹—get_headers(): 取得URL的回應頭訊息 Jul 25, 2023 am 09:05 AM

PHP函數介紹—get_headers(): 取得URL的回應頭訊息

為什麼NameResolutionError(self.host, self, e) from e,怎麼解決 為什麼NameResolutionError(self.host, self, e) from e,怎麼解決 Mar 01, 2024 pm 01:20 PM

為什麼NameResolutionError(self.host, self, e) from e,怎麼解決

怎樣透過幾個步驟取得您的 Steam ID? 怎樣透過幾個步驟取得您的 Steam ID? May 08, 2023 pm 11:43 PM

怎樣透過幾個步驟取得您的 Steam ID?

如何在Java中使用URL編碼和解碼 如何在Java中使用URL編碼和解碼 May 08, 2023 pm 05:46 PM

如何在Java中使用URL編碼和解碼

Scrapy優化技巧:如何減少重複URL的爬取,提高效率 Scrapy優化技巧:如何減少重複URL的爬取,提高效率 Jun 22, 2023 pm 01:57 PM

Scrapy優化技巧:如何減少重複URL的爬取,提高效率

html和url的差別是什麼 html和url的差別是什麼 Mar 06, 2024 pm 03:06 PM

html和url的差別是什麼

SpringBoot多controller如何加入URL前綴 SpringBoot多controller如何加入URL前綴 May 12, 2023 pm 06:37 PM

SpringBoot多controller如何加入URL前綴

nginx怎麼設定url重定向 nginx怎麼設定url重定向 May 12, 2023 am 10:31 AM

nginx怎麼設定url重定向

See all articles