C实现
截取html
设定是html字符串里只有<p>标签,且闭合
输入:"abc<p class='c1'>defg</p>hijk<p style='width=100px;'>lmn</p>"
截取3个字符
输出:abc
截取4个字符
输出abc<p class='c1'>d</p>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * htmlSource="abc<p class='c1'>defg</p>hijk<p style='width=100px;'>lmn</p>";
char * GetSubString(char* Source,int length)
{
int htmlLength=0;
for(int i=0;i<strlen(Source);i++)
{
if(Source[i]=='<')
{
while(Source[i]!='>')
i++;
}
else
htmlLength++;
}
if(length>htmlLength)
{
printf("截取长度过长\n");
return NULL;
}
else
{
char* target=(char *)malloc(sizeof(char)*(strlen(Source)+1));
int sum1=0;
int sum2=0;
int flag=0;
for(int i=0;i<length;i++)
{
if(Source[sum2]=='<')
{
if(Source[sum2+1]=='p')
flag=1;
else if(Source[sum2+1]=='/')
flag=0;
do
{
target[sum1++]=Source[sum2++];
}
while(Source[sum2]!='>');
target[sum1++]=Source[sum2++];
target[sum1++]=Source[sum2++];
}
else
{
target[sum1++]=Source[sum2++];
}
}
if(flag==1)
{
target[sum1++]='<';
target[sum1++]='/';
target[sum1++]='p';
target[sum1++]='>';
flag=0;
}
target[sum1]='\0';
return target;
}
}
void main()
{
int length=0;
while(length!=-1)
{
printf("输入截取长度\n");
scanf("%d",&length);
char * target=GetSubString(htmlSource,length);
printf("%s\n",target);
free(target);
}
}