获取字符串中符合要求的子串。

php_wsd 2007-10-26 07:29:46
str="sdfdf<<b>>>dsfdsfsdf<<1234>>>sdfsf"
我想得到<<与>>>之间的内容,即
b
1234
求代码
...全文
125 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
php_wsd 2007-10-26
  • 打赏
  • 举报
回复
谢谢楼上各位。
WizardK 2007-10-26
  • 打赏
  • 举报
回复

int fnSplitString(const CString& strString, const CString& strSplit1, const CString& strSplit2, CStringArray& csaRet)
{
CString strInput = strString;
int nCount = 0;
int nStep = 0;
int i;

csaRet.RemoveAll();
if (strInput.IsEmpty())
return nCount;
else
{
while (true)
{
if (nStep == 0)
{
i = strInput.Find(strSplit1);
if (i = -1)
return nCount;
else
{
strInput.Delete(0, i + strSplit1.GetLength());
nStep = 1;
}
}
else
if (nStep == 1)
{
i = strInput.Find(strSplit2);
if (i = -1)
return nCount;
else
{
csaRet.Add(strInput.Left(i));
nCount++;
strInput.Delete(0, i + strSplit1.GetLength());
nStep = 0;
}
}
}
}
}
青稞 2007-10-26
  • 打赏
  • 举报
回复
楼上说得对,字符串分解还是自己解析好点。。。
只要思路对了,以后想怎么分就怎么分。。
zaodt 2007-10-26
  • 打赏
  • 举报
回复

如果决定长期发展,我的建议是:不要用 CString 类,一个字节一个字节的读,然后进行分析。

思路:

1、每次读取一个字节;
2、判断是不是“<”;
3、如果不是,判断下一个;
如果是,做标记;
4、判断下一个;
如果不是“<”,判断下一个;
如果是“<”,做标记,记录位置(表示后边的内容就是需要的);
5、判断下一个;
如果是“>”,做标记,开始累计;
如果不是“>”,累计清零;
6、判断下一个;
如果是“>”,做标记,开始累计;
如果不是“>”,累计清零;
7、直到连续三个“>”出现,表示遇到了结束符,记录位置;
8、根据两次记录的位置,获取内容;


我说的不一定全对,但是用这种方法做过后,在遇到类似的问题你就不怕了。
居易锦风 2007-10-26
  • 打赏
  • 举报
回复
字符串截取函数:
CString::GetAt
CString::Mid
CString::Left
CString::Right
字符串查找函数:
CString::Find
CString::ReverseFind
CString::FindOneOf

用这些就够了
凤矶 2007-10-26
  • 打赏
  • 举报
回复
嗯,是这么来
fulingwei 2007-10-26
  • 打赏
  • 举报
回复
CFile::Find,Left,Mid,自己查查怎么用

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧