删除特定字符串内容的问题~

lyla105 2010-05-08 10:46:28
CString s( ".\TEST1.SHP.\TEST2.STR.\TEST3.STR" );
int n= s.ReverseFind( '\\' );

s.Delete(0,n);
想要提取出最后那个.\的内容TEST3.STR,上面的代码怎么改呢?
...全文
146 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩南_哥 2010-05-08
  • 打赏
  • 举报
回复
用CString类中的ReverseFind函数就成,倒叙查找指定字符,并返回首次查找到的位置
zwfgdlc 2010-05-08
  • 打赏
  • 举报
回复
.....
举一反三嘛,不管是什么格式的,
你把要删除的字符替换成空的不就行了。
原理是一样的。
wildwise 2010-05-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wildwise 的回复:]
CString s( ".\\TEST1.SHP.\\TEST2.STR.\\TEST3.STR" );
s.Replace("\\","\\\\");
int n= s.ReverseFind( '\\' );
CString str = s.Mid(n+1);
[/Quote]
错了,CString s( ".\TEST1.SHP.\TEST2.STR.\TEST3.STR" );这里面是单斜杠
wildwise 2010-05-08
  • 打赏
  • 举报
回复
CString s( ".\\TEST1.SHP.\\TEST2.STR.\\TEST3.STR" );
s.Replace("\\","\\\\");
int n= s.ReverseFind( '\\' );
CString str = s.Mid(n+1);
lyla105 2010-05-08
  • 打赏
  • 举报
回复
CString s( ".\TEST1.SHP.\TEST2.STR.\TEST3.STR" )这个格式是一定的,不是\\的,而且最后.\的内容是保存在文本中的,不是预知的。。。
zwfgdlc 2010-05-08
  • 打赏
  • 举报
回复
s.Replace(TEXT(".\\TEST3.STR"), 0);
这样也行。
zwfgdlc 2010-05-08
  • 打赏
  • 举报
回复
试下这样
	
CString s(TEXT(".\\TEST1.SHP.\\TEST2.STR.\\TEST3.STR"));
s.Replace(TEXT(".\\TEST3.STR"), '\0');

[/code]
liwei3290 2010-05-08
  • 打赏
  • 举报
回复
s.right()
lyla105 2010-05-08
  • 打赏
  • 举报
回复
CString s( ".\TEST1.SHP.\TEST2.STR.\TEST3.STR" );
s.TrimLeft(_T(".\\"));
MessageBox(s);
中间s.TrimLeft(_T(".\\"))添加与否没什么影响,为什么呢?出来s=.TEST1.SHP.TEST2.STR.TEST3.STR,\默认好像就不存在,那该如何获得最后的TEST3.STR呢?
acdbxzyw 2010-05-08
  • 打赏
  • 举报
回复

s.TrimLeft();
lyla105 2010-05-08
  • 打赏
  • 举报
回复
问题解决。谢谢各位~~
wildwise 2010-05-08
  • 打赏
  • 举报
回复
CString s( ".TEST1.SHP.TEST2.STR.TEST3.STR" );

CString str = s.Mid(0,s.ReverseFind('.'));

CString endstr = s.Mid(str.ReverseFind('.')+1);
wildwise 2010-05-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lyla105 的回复:]
引用 7 楼 wildwise 的回复:
CString s( ".\\TEST1.SHP.\\TEST2.STR.\\TEST3.STR" );
s.Replace("\\","\\\\");
int n= s.ReverseFind( '\\' );
CString str = s.Mid(n+1);

这样是替换不了那个\的,因为没有这个字符在,就是s=.TEST1.SHP.TE……
[/Quote]
替换不了那个\ ?
LZ你先试试再说成不?
没有反斜杠?你的题目里面CString s( ".\TEST1.SHP.\TEST2.STR.\TEST3.STR" );这是什么?
Eleven 2010-05-08
  • 打赏
  • 举报
回复

CString strText(_T(".\\TEST1.SHP.\\TEST2.STR.\\TEST3.STR"));
strText = strText.Mid(strText.ReverseFind(_T('\\')) + 1);
AfxMessageBox(strText);
lyla105 2010-05-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wildwise 的回复:]
CString s( ".\\TEST1.SHP.\\TEST2.STR.\\TEST3.STR" );
s.Replace("\\","\\\\");
int n= s.ReverseFind( '\\' );
CString str = s.Mid(n+1);
[/Quote]
这样是替换不了那个\的,因为没有这个字符在,就是s=.TEST1.SHP.TEST2.STR.,现在想把倒数第二个点个提取出来,然后再截取第二个点后面的字符串,变成TEST3.STR,该怎么截取第二个点呢?用reversefind只能截取最后一个点的位置。。

16,472

社区成员

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

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

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