要分析的字符串形如:
<aaa>属性</a>
要捕获的字符串:
“<aaa>属性”
但有时候,原字符串有的是这样的:
<aaa><bbb><ccc>属性</a>
怎么能够这两种情况都存在的情况下,从中捕获“<aaa>属性”
<aaa>属性</a>
要捕获的字符串:
“<aaa>属性”
但有时候,原字符串有的是这样的:
<aaa><bbb><ccc>属性</a>
怎么能够这两种情况都存在的情况下,从中捕获“<aaa>属性”
解决方案 »
- 如何在一个对话框中使用另一个对话框中的变量
- 嗅探器的问题
- WM_DEVICECHANGE消息如何识别插入的设备类型?例如蓝牙
- 画线程序线条拾取
- list control如何改变某一行背景颜色
- 关于USB虚拟串口设备的问题
- 一个关于打印的问题,希望大家来看看,急!
- 帮我看看使用DirectX编译时的一个错误。
- 为什么我下载的BCG和XT界面库都不能显示XP的对话框和SDI外框的界面,而只有菜单及控件?
- 基于对话框或(CFormView)的应用程序,怎样从电脑中加入一张bmp图片,并且在图像控件中显示?
- 欢迎访问http://www.zd-czy.zj001.net下载CAD造型软件。我自己开发的(vc),无使用期限限制,欢迎大家多提意见。
- 请教WINDOWS进程间通信的方法有几种?
说明:
参数:
strToken:搜索表达式,其中 '*'、'?'为统配符,均表示0个或者以上的字符,不同的是,'*'所表示的字符串将不被处理,'?'所表示的字符串将被返回;strSource:欲搜索的文本iStartPos:搜索开始位置(文本)返回:从iStartPos起第一个'?'所表示的字符串
注:通配符不能连在一起,如“*?”将导致不可预测错误例如:
1、strResult=Token3("<aaa>?</a>","<aaa>属性</a>",0);
结果 strResult="属性"
2、strResult=Token3("<aaa>*c>?</a>","<aaa><bbb><ccc>属性</a>",0);
结果 strResult="属性"我现在在研究HTML解析,希望能够跟楼主切磋。
mail:[email protected]
我还在完善这个函数,但有点山穷水尽了,似乎只能用有限自动机来完成这种功能了。CString Token3(CString strToken, CString strSource, int &iStartPos)
{
CString strResult;
CString strTemp;
int iSourceLen,iTokenLen;
int i,j;
int iStatus;
int iSaveJ;
int iOldStatus; iSourceLen=strSource.GetLength();
iTokenLen=strToken.GetLength(); j=0;
iOldStatus=iStatus=2;
for(i=iStartPos;i<iSourceLen && j<iTokenLen;)
{
switch(iStatus)
{
case 0: // '*' has inputted
if(strSource[i]==strToken[j+1])
{
iOldStatus=0;
iStatus=2;
j++;
}
else
i++;
break;
case 1: // '?' has inputted
if(strSource[i]==strToken[j+1])
{
iOldStatus=1;
iStatus=2;
j++;
}
else
strResult+=strSource[i++];
break;
case 2: // other
iSaveJ=j==0?j:j-1;
strTemp.Empty();
while( i<iSourceLen && j<iTokenLen )
{
if(strToken[j]=='*')
{
iStatus=0;
break;
}
if(strToken[j]=='?')
{
strResult+="\t";
iStatus=1;
break;
}
if(strSource[i++]==strToken[j])
{
strTemp+=strSource[i-1];
j++;
}
else
{
strTemp+=strSource[i-1];
j=iSaveJ;
iStatus=iOldStatus;
iOldStatus=2;
if(iStatus==1)
strResult+=strTemp;
break;
}
}
break;
default:
break;
}
}
if(j<iTokenLen-1)
strResult.Empty();
iStartPos=i+1; return strResult;
}
<A HREF="http://www.csdn.net">CSDN</A>
<A HREF=http://www.csdn.net>CSDN</A>
<a href=http://www.csdn.net tager=_blank>csdn</a>
<a href="http://www.csdn.net" tager="_blank">csdn</a>
<a href=http://www.csdn.net tager=_blank style="font:宋体;font-size:9pt">csdn</a>
....
总不至于在判断字符串属于哪一种情况吧?那我要分析HTML不是要累死
怎办?
所以不太可能
属性中有<>怎么办,至少的规定属性中没有某些字符