CString将字符'\n'替换为指定字符串
来源:互联网 发布:大数据搜索与挖掘平台 编辑:程序博客网 时间:2024/06/06 23:16
最近写一个Excel批量处理的程序,需要将换行符替换为<p>\r\n</p>,但是想了很多办法却不能实现,如下:
本来是要将“\r\n”替换为"<p>\r\n</p>",但是发现从Excel或其他文件中读取出来的字符串在二进制窗口中发现只有换行符,即'\n'(ASCII码为0A),而回车'\r'(ASCII码为0D)却没有了,因此使用CString的Replace(_T("\r\n"),_T("<p>\r\n</p>"))就无效了。
于是我就想用CString的Replace(_T("\n"),_T("<p>\r\n</p>")),但是发现不成功,因为如果是一个字符的话,Replace不会将其视为字符串,而是当做字符来处理,如果前一个参数是字符的话,第二个参数也必须是字符,不符合业务要求,不能达到目的,于是该方法也淘汰。
到第二天,突然灵感来了,于是疯狂写下如下这段代码,终于成功了!
// 将回车换行替换为段
int nIndex=0;
CString strTemp;
TCHAR szOld[5]={'\0'};
TCHAR szNew[15]={'\0'};
// 将换行解析为段<p></p>
while((nIndex=strWalkThrough.Find('\n',nIndex+1))>0)
{
if (nIndex+3<=strWalkThrough.GetLength()
&& strWalkThrough.GetAt(nIndex+1) == '<'
&& strWalkThrough.GetAt(nIndex+2) == 'p'
&& strWalkThrough.GetAt(nIndex+3) == '>') continue;
strTemp.Empty();
strTemp = strWalkThrough.Mid(nIndex+1,2);
memset(szOld,'\0',sizeof(szOld));
sprintf(szOld,_T("\n%s"),strTemp);
memset(szNew,'\0',sizeof(szNew));
sprintf(szNew,_T("</p>\r\n<p>%s"),strTemp);
strWalkThrough.Replace(szOld,szNew);
}
不知道你们看懂了没有,我的想法是找到'\n'字符,然后取后面两个字节(因为可能是中文,最好取两个字节),然后将'\n'和后面两个字节拼成字符串,再替换为想要的结果,即Replace(_T("\nX"),_T("</p>\r\n<p>X"))就成功了,"X"代表与'\n'相邻的后面的字符串。
0 0
- CString将字符'\n'替换为指定字符串
- 将字符串中的指定字符替换为其他指定字符
- mysql将字符串替换为指定内容
- 将字符串中指定的字符替换成指定字符
- 将字符串中的字符替换成指定字符c
- 使用Notepad++将字符\n替换为回车换行
- 算法--替换字符串的空格为指定字符
- CString 字符串 按指定字符 分隔 获取第n段的子字符串
- 字符串指定位置替换字符
- Oracle将字符串转换为数字,并替换特殊字符
- Oracle将字符串转换为数字,并替换特殊字符
- string 将指定的字符或字符串全部替换成特定的字符或字符串
- Java 将字符串按照指定字符拆分 为List
- CString 字符串指定修改某个字符
- CString 按指定字符分割为若干个CString
- 将字符串按照某一字符拆开为CString类型的数组
- 将字符串中的空字符全部替换为别的字符串 Python 版
- javascript 替换字符(全部替换) 将/ 替换为//
- 客户端 用不用 bind 的区别
- java 伪共享
- sql函数匹配'a|b'和'c|d|a'
- Android图文混排的实现思路
- SQL Server 高性能写入的一些总结
- CString将字符'\n'替换为指定字符串
- Strtus2标签<s:url>
- SQLite可视化管理工具汇总
- openwrt 内核编译纪要
- Customizing Your Build With Gradle
- 代码中给控件设置颜色~
- Java ClassLoader
- effective java 读书笔记(四)
- React 版本