分享

第116讲 boost::algorithm::string之替换和删除

 佛法与智慧 2016-09-23

boost::algorithm::string可以说是很全面的处理字符串的一些算法的集合,上一讲我们说来查找一簇函数,那么这一讲我们说的是替换和删除,为什么替换和删除要一起说呢?因为他们的其实是一样的,删除可以是替换的特殊情况(将其替换为'')。

和查找一簇函数一样,替换和删除函一样拥有多个版本,如下:


//==============================================

replace/erase_first // 替换/删除第一次出现的字符串

replace/erase_last // 替换/删除最后一次出现的字符串

replace/erase_nth // 替换/删除第n次出现的字符串 ,这个函数和我们说过的MString的有些区别,MString的索引是从开始的,这里是从开始的


replace/erase_all // 替换/删除所有

replace/erase_head // 替换/删除前面的多少个字节

replace/erese_tail // 替换/删除最后多少个字节


//==============================================


这些函数中前面8个拥有前缀i_版本和后最_copy的版本,前缀i_的版本是不区分大小写的替换或者删除,而后缀_copy的版本是不修改原始字符而返回一个新的你所需要的字符串。而对于后面4个函数来说因为是不管字符问题而是直接修改多少个字节问题所以并没有前缀i_的版本。

下面我们来每个函数简单举个例子给大家演示一下用法,其实相当简单:

//==============================================

std::string str('Hello World Hello Hello');

boost::algorithm::replace_first(str, 'Hello', 'NoHello'); // 将第一次出现的Hello替换为NoHello

std::cout << str << std::endl; // NoHello World Hello Hello


boost::algorithm::erase_head(str, 2); // 将前面的两个字节删掉

std::cout << str << std::endl; // Hello World Hello Hello


boost::algorithm::replace_nth(str, 'Hello', 1, 'NoHello');// 将第二个Hello替换为NoHello

std::cout << str << std::endl;// Hello World NoHello Hello


boost::algorithm::replace_first(str, 'NoHello', 'Hello'); // 恢复原状

std::cout << str << std::endl;


boost::algorithm::replace_last(str, 'Hello', 'NoHello');

std::cout << str << std::endl;// Hello World Hello NoHello


std::string str2 = boost::algorithm::replace_last_copy(str, 'NoHello', 'Hello');

std::cout << str2 << std::endl; // Hello World Hello Hello

std::cout << str << std::endl;// Hello World Hello NoHello

//=================================================


//=============================================

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多