>  기사  >  웹 프론트엔드  >  js에서는 단어 수에 따라 문자열을 가로채지만 url_javascript 팁은 가로챌 수 없습니다.

js에서는 단어 수에 따라 문자열을 가로채지만 url_javascript 팁은 가로챌 수 없습니다.

WBOY
WBOY원래의
2016-05-16 17:57:221122검색

오늘 요청을 받았습니다.
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){
이것을 반환합니다.
}
sCut = sCut || ""
var max = n-sCut.sizeAt(); = 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){
이것을 반환합니다. toString() ;
}
sCut = sCut "";
var max = n-sCut.sizeAt()
var s = this;
var aUrl = s.match(/https?://[a-zA-Z0-9] (.[a-zA-Z0-9] ) ([-_A-Z0-9a-z$. ! */ ,:;@&=?~#%]*)*/gi);
//최대 문자가 URL 사이에 정확히 있을 경우 bCut은 flase로 설정됩니다.
var bCut =
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;
//현재 단어 수가 최대값보다 적지만 URL을 추가하면 최대값을 초과합니다.
if(nCurr < max && nCurr nLenURL>max){
s = sResult sCut;
bCut;
break;
}
nCurr = nLenURL
}
if(bCut === false)
}
};
}
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으로 문의하세요.