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替换字符串内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++ 读文件 将文件内容读入到字符串string中的方法

    如下所示: #include <string> #include <fstream> #include <sstream> #include <iostream> #include <stdlib.h> using namespace std; //从文件读入到string里 string readFileIntoString(char * filename) { ifstream ifile(filename); //将文件读入到ostring

  • C++ 中String 替换指定字符串的实例详解

    C++ 中String 替换指定字符串的实例详解 C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事. 首先明白一个概念,即string替换所有字符串,将"12212"这个字符串的所有"12"都替换成"21",结果是什么? 可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现, 代码如

  • 详解NSString 与C++ string字符串的互转

    NSString 与C++ string字符串的互转实例详解 1.  string 转换为 NSString std::string str("hello"); NSString *str=[NSString stringWithString:str.c_str()]; NSString *istr=[NSString stringWithString:@"zsh"]; str=[istr cStringUsingEncoding: NSUTF8StringEnco

  • C++ string 字符串查找匹配实例代码

    在写C++程序中,总会遇到要从一个字符串中查找一小段子字符串的情况,对于在C中,我们经常用到strstr()或者strchr()这两种方法.而对于C++的string,我们往往会用到find(). C++:#inlcude<string> C: #include<string.h> find():在一个字符串中查找一个指定的单个字符或字符数组.如果找到,就返回首次匹配的开始位置:如果没有查找到匹配的内容,就返回string::npos. find_first_of():在一个目标串

  • 详解C++ string常用截取字符串方法

    string常用截取字符串方法有很多,但是配合使用以下两种,基本都能满足要求: find(string strSub, npos); find_last_of(string strSub, npos); 其中strSub是需要寻找的子字符串,npos为查找起始位置.找到返回子字符串首次出现的位置,否则返回-1: 注: (1)find_last_of的npos为从末尾开始寻找的位置. (2)下文中用到的strsub(npos,size)函数,其中npos为开始位置,size为截取大小 例1:直接查

  • C字符串与C++中string的区别详解

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:  C字符串 string对象(C++) 所需的头文件名称  <string>或<string.h> <string>或<string.h> 需要头文件 原因 为了使用字符串函数 为了使用string类 声明 方式 char name[20]; string name; 初始化方式 char name[20]="

  • 详解C++的String类的字符串分割实现

    详解C++的String类的字符串分割实现 功能需求,输入一个字符串"1-2-3"切割出"1"."2"."3".在Java下直接用String的split函数就可以了.c++下String没有直接提供这个函数,需要自己写. 网上给出的解决方案是这里的三种方法.但我是通过JNI访问的,在里面用这些vector可能不中,自己封装了个,仅供参考: String recogScop = "01-02-03"; co

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

    C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事. 首先明白一个概念,即string替换所有字符串,将"12212″这个字符串的所有"12″都替换成"21″,结果是什么? 可以是22211,也可以是21221,有时候应用的场景不同,就会希望得到不同的结果,所以这两种答案都做了实现,代码如下: # include # include using namespace st

  • python使用xlrd实现检索excel中某列含有指定字符串记录的方法

    本文实例讲述了python使用xlrd实现检索excel中某列含有指定字符串记录的方法.分享给大家供大家参考.具体分析如下: 这里利用xlrd,将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件 import os import xlrd,sys # input the excel file Filename=raw_input('input the file name&path:') if not os.path.isfile(Filename): rais

  • 详解java中String值为空字符串与null的判断方法

    Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个字符串.例如声明一个对象的引用,String a=null. ""表示的是一个空字符串,也就是说它的长度为0.例如声明一个字符串String s="". 2.内存分配 String a=null:表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间. String s="":表示声明一个字符串类型的引用,其值为""空

  • Java中String的split切割字符串方法实例及扩展

    目录 一.public String[] split(String regex) 二.public String[] split(String regex, int limit) 三.扩展 总结 一.public String[] split(String regex) public String[] split(String regex): 根据传入的字符串参数,作为规则,切割当前字符串 String a="198,168,10,1"; String [] arr=a.split(&

  • Java 在 Word 文档中使用新文本替换指定文本的方法

    创作一份文案,经常会高频率地使用某些词汇,如地名.人名.人物职位等,若表述有误,就需要整体撤换.文本将介绍如何使用Spire.Doc for Java,在Java程序中对Word文档中的指定文本进行替换. 工具/原料 Free Spire.Doc for Java(免费版) IntelliJ IDEA Jar文件获取及导入 方法1:先从官网下载jar包. 导入步骤: 下载后,解压文件,并将lib文件夹下的Spire.Doc.jar文件导入java程序.参考如下导入效果: 方法2:可通过maven

  • Python3中的f-Strings增强版字符串格式化方法

    在Python3.6提供f-Strings新的字符串格式化语法.不仅更加可读.简洁,相比其他方式也不易造成错误,而且还更快. 看完本文你将学习到如何以及为什么使用f-strings.正式开始之前,我们先看看之前格式化字符串语法. 1. 旧式字符串格式化 在Python3.6之前,主要有两种方式格式化字符串:%-格式化 和 str.format().下面我们先了解它们的用法以及局限性. 1.1 %-格式化 这时Python的官方字符串格式化方法,从语言开始时就存在.官方文档明确提出不建议使用,并其

  • php正则替换变量指定字符的方法

    本文实例讲述了php正则替换变量指定字符的方法.分享给大家供大家参考.具体如下: 这里介绍三种常用方法. 方法一: <?php $str = preg_quote('(银子)'); $txt = '我的呢称(银子)'; echo preg_replace("/($str)/","<span style='color:#f00;'>$1</span>",$txt); ?> 方法二: <?php $str = quotemeta

  • C#中图片、二进制与字符串的相互转换方法

    本文实例讲述了C#中图片.二进制与字符串的相互转换方法.分享给大家供大家参考,具体如下: protected void Button1_Click(object sender, EventArgs e) { //图片转二进制 byte[] imageByte = GetPictureData(Server.MapPath("./uploadfile/111.png")); //二进制转换成字符串 string picStr = Convert.ToBase64String(imageB

  • java中建立0-10m的消息(字符串)实现方法

    直接用StringBuilder,它的append方法方便快速构建字符串. StringBuilder sb1=new StringBuilder(); for(int i=0;i<1024*1024*10;i++){ sb1.append('a'+""); } 取消息时 String str=sb1.tostring(); 取1M str.substring(0, 1024*1024)).getBytes(); 以上这篇java中建立0-10m的消息(字符串)实现方法就是小编分

随机推荐