当前位置: 首页 > 编程笔记 >

C++中string替换所有指定字符串的方法

西门正平
2023-03-14
本文向大家介绍C++中string替换所有指定字符串的方法,包括了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 )
str.replace(pos,old_value.length(),new_value);
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 )
str.replace(pos,old_value.length(),new_value);
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:下面看下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,只替换第一个匹配的返回结果字符串。返回结果:hard good study, day day up

var str="good good study, day day up"
var ling="hard"
str=str.replace(/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"
 
str=str.replace(/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";
str=str.replace(toRe,ling)//返回结果:good hard study, day day up

总结

到此这篇关于C++中string替换所有指定字符串的文章就介绍到这了,更多相关c++ string替换字符串内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍C++ 中String 替换指定字符串的实例详解,包括了C++ 中String 替换指定字符串的实例详解的使用技巧和注意事项,需要的朋友参考一下 C++ 中String 替换指定字符串的实例详解 C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。 首先明白一个概念,即stri

  • 我正在寻找在javascript或jquery中更改字符串中所有字符的最佳和最快的方法 例如: abcdefghijklmnopqrstuvwxyz==>aximi、fixi、fixi、fixi、fixi、fixi、fixi、fixi、fixi、fixi、fixi、fix 或 abcdefghijklmnopqrstuvwxyz==>å¡Á¡ãghïjklmñãqr§µvwx¡ãz ...。 输出

  • 问题内容: 用JavaScript替换字符串中所有字符串/字符实例的最快方法是什么?A ,- 循环,正则表达式? 问题答案: 最简单的方法是使用带有flag 的正则表达式替换所有实例: 这将替换所有出现的与字符串中。如果只有一个字符串,则可以将其转换为RegExp对象,如下所示:

  • 问题内容: 我有一个包含多个空格的字符串。我想用加号代替它们。我以为我可以用 但它只会替换第一次出现的情况。如何获得它来代替所有出现的情况? 问题答案: 这是不需要正则表达式的替代方法:

  • 问题内容: 我正在从数据库中检索数据,其中该字段包含带有HTML数据的字符串。我想替换所有的双引号,使得它可以被用于的 jQuery的 。 使用Java,我正在尝试使用替换引号。 结果字符串未显示所需的更改。O’Reilly的一篇文章规定了使用Apache字符串工具。还有其他办法吗? 是否有正则表达式或我可以使用的东西? 问题答案: 这是如何做 请注意,字符串是不可变的,因此仅仅做是不够的。您必须

  • 问题内容: 我有一个字符串,我想用一个星号替换任何不是标准字符或数字的字符,例如(az或0-9)。例如,“ h ^&ell`。,| ow] {+ orld”被替换为“ h * ell * o * w * orld”。请注意,多个字符(例如“ ^&”)将替换为一个星号。我将如何去做呢? 问题答案: 正则表达式可以解救! 例: