C++中string替换所有指定字符串的方法
C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。
首先明白一个概念,即string替换所有字符串,将”12212″这个字符串的所有”12″都替换成”21″,结果是什么?
可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,代码如下:
#include #include usingnamespacestd; string&replace_all(string&str,conststring&old_value,conststring&new_value) { while(true){ string::size_typepos(0); if((pos=str.find(old_value))!=string::npos) str.replace(pos,old_value.length(),new_value); elsebreak; } returnstr; } string&replace_all_distinct(string&str,conststring&old_value,conststring&new_value) { for(string::size_typepos(0);pos!=string::npos;pos+=new_value.length()){ if((pos=str.find(old_value,pos))!=string::npos) str.replace(pos,old_value.length(),new_value); elsebreak; } returnstr; } intmain() { cout<输出如下:
22211
21221
*/
OK,这样的话,任务就完成啦。
ps:下面看下String.replace()替换字符串中指定的字符
String.replace() 在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
语法:stringObject.replace(regexp/substr,replacement)
参数:
regexp/substr 必需。规定子字符串或要替换的模式的RegExp对象。
请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为RegExp对象。
replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。 说明
字符串stringObject的replace()方法执行的是查找并替换的操作。它将在stringObject中查找与regexp相匹配的子字符串,然后用replacement来替换这些子串。如果regexp具有全局标志g,那么replace()方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。replacement可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是replacement中的$字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
例子:
1.无全局标志/g,只替换第一个匹配的返回结果字符串。返回结果:hardgoodstudy,daydayup
varstr="goodgoodstudy,daydayup" varling="hard" str=str.replace(/good/,ling)//返回结果:hardgoodstudy,daydayup2.带全局标志/g,全局替换。返回结果:hardhardstudy,daydayup
varstr="goodgoodstudy,daydayup" varling="hard" str=str.replace(/good/g,ling)//返回结果:goodgoodstudy,daydayup
3.不一样的格式:非字符串的参数。因为格式限制,无法用/g全局模式。只能替换第一个匹配的字符串。
varstr="goodgoodstudy,daydayup" vartoRe="good"; varling="hard"; str=str.replace(toRe,ling)//返回结果:goodhardstudy,daydayup总结
到此这篇关于C++中string替换所有指定字符串的文章就介绍到这了,更多相关c++string替换字符串内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。