javascript文章は部分を切り取りますが、これは実現コードを示しています.

2587 ワード

html形式の内容なので、直接内容を切り取る前の文字は明らかに不適切です.直接にすべてのhtmlフォーマットを取り除いてから切り取っても希望の効果が得られない場合、ネットで検索した後、下記のコードを書いたら基本的な要求を満たすことができるはずです.(jsで書いたのはデバッグしやすいから)
 
  
var br = {};
br.spTags = ["img","br","hr"];/* */
br.contain = function(arr,it){
for(var i=0,len=arr.length;iif(arr[i]==it){
return true;
}
}
return false;
}
br.subArtc = function(article,worldNum){
var result = [];
/* */
var wcount = 0;
var startTags = [],endTags = [];
var isInTag = false;
for(var i=0,len=article.length;ivar w = article[i];
result.push(w);
if(w=="isInTag = true;
}
if(!isInTag){
wcount++;
if(wcount==worldNum){
break;
}
}
if(w==">"){
isInTag = false;
}
}
/* */
var j=0;
isInTag = false;
var isStartTag = true;
var tagTemp = "";
while(jw = result[j];
if(isInTag){
if(w==">" || w==" " || w=="/"){
isInTag = false;
if(isStartTag){
startTags.push(tagTemp);
}else{
endTags.push(tagTemp);
}
tagTemp = "";
}
if(isInTag){
tagTemp+=w;
}
}
if(w=="isInTag = true;
if(result[j+1]=="/"){
isStartTag = false;
j++;
}else{
isStartTag = true;
}
}
j++;
}
/* img,br */
var newStartTags = [];
for(var x=0,len=startTags.length;xif(!br.contain(br.spTags,startTags[x])){
newStartTags.push(startTags[x]);
}
}
/* */
var unEndTagsCount = newStartTags.length - endTags.length;
while(unEndTagsCount>0){
result.push("result.push("/")
result.push(newStartTags[unEndTagsCount-1]);
result.push(">");
unEndTagsCount--;
}
return result.join("");
};

基本的な考え方:
1.マークを迂回して、実際の内容の文字数を取得し、内容の先頭100文字を表示する必要がある場合、マークを迂回して検索し、100文字目の実際の索引を得る.この索引の前の文字列を切り取ります.
2.得られた文字列によって、この文字列に存在する開始マークと終了マークを得る.注:ここの開始マークは「
3.2で得られたスタートマークのうち、ペアで表示されるものは不要です.
4.3処理された開始マークと2で得られた終了マークとを比較して、ペアにマッチしていない適切な位置でペアにします.
この機能は厳格なテストを経ていません.興味があればテストを手伝ってもいいです.もっといい考えがあるなら、レスで検討してもいいです.
作者:cnbbravifing