C++中string替换所有指定字符串的⽅法
C++的string提供了replace⽅法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。
⾸先明⽩⼀个概念,即string替换所有字符串,将”12212″这个字符串的所有”12″都替换成”21″,结果是什么?
可以是22211,也可以是21221,有时候应⽤的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,代码如下:
# include
# include
using namespace std;
string& replace_all(string& str, const string& old_value, const string& new_value)
{
while( true ) {
string::size_type pos(0);
if( (pos=str.find(old_value))!=string::npos )
else break ;
}
returnstr;
}
string& replace_all_distinct(string& str, const string& old_value, const string& new_value)
{
for(string::size_type pos(0); pos!=string::npos; pos+=new_value.length()) {
if( (pos=str.find(old_value,pos))!=string::npos )
else break ;
}
returnstr;
}
intmain()
{
cout << replace_all(string(“12212″),“12″,“21″) << endl;
cout << replace_all_distinct(string(“12212″),“12″,“21″) << endl;
}
/
*
输出如下:
22211
21221
*/
OK,这样的话,任务就完成啦。
ps:下⾯看下place() 替换字符串中指定的字符
语法: place(regexp/substr,replacement)
参数:
必需。规定⼦字符串或要替换的模式的 RegExp 对象。
regexp/substr
请注意,如果该值是⼀个字符串,则将它作为要检索的直接量⽂本模式,⽽不是⾸先被转换为 RegExp 对象。replacement必需。⼀个字符串值。规定了替换⽂本或⽣成替换⽂本的函数。
说明
字符串 stringObject 的 replace() ⽅法执⾏的是查并替换的操作。它将在 stringObject 中查与 regexp 相匹配的⼦字符串,然后⽤ replacement 来替换这些⼦串。如果 regexp 具有全局标志 g,那么 replace() ⽅法将替换所有匹配的⼦串。否则,它只替换第⼀个匹配⼦串。
replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所⽰,它说明从模式匹配得到的字符串将⽤于替换。
例⼦:
1. ⽆全局标志/g,只替换第⼀个匹配的返回结果字符串。返回结果:hard good study, day day up
var str="good good study, day day up"
var ling="hard"
place(/good/,ling)//返回结果:hard good study, day day up
2. 带全局标志/g,全局替换。返回结果:hard hard study, day day up
var str="good good study, day day up"
var ling="hard"
place(/good/g,ling)//返回结果:good good study, day day up
3. 不⼀样的格式:⾮字符串的参数。因为格式限制,⽆法⽤/g 全局模式。只能替换第⼀个匹配的字符串。
var str="good good study, day day up"
var toRe="good";
var ling="hard";
place(toRe,ling)//返回结果:good hard study, day day up字符串replace函数
总结
到此这篇关于C++中string替换所有指定字符串的⽂章就介绍到这了,更多相关c++ string替换字符串内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。