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 //================================================= //============================================= |
|