题目描述
输入一个字符串,以回车结束(字符串长度不超过100)。
该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。
现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入格式
输入共3行。
第1行是包含多个单词的字符串 s;
第2行是待替换的单词a(长度不超过100);
第3行是a将被替换的单词b(长度不超过100)。
输出格式
共一行,输出将s中所有单词a替换成b之后的字符串。
样例
输入样例:
You want someone to help you
You
I
输出样例:
I want someone to help you
分析
直接用正则表达式替换单词即可
C++ 代码
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main(){
string s,s1,s2;
getline(cin,s);
cin>>s1>>s2;
cout<<regex_replace(s,regex("\\b" + s1 + "\\b"),s2)<<endl;
return 0;
}
如果要被替换的单词在开头,为什么前面的那个空格不用匹配还是可以正常替换?
\b用于匹配单词的边界,应该不限于空格,开头结尾也是边界。
了解了,十分感谢!
666!
同感
为什么要加上\b
匹配单词的边界空格,比如hello替换hi时不用替换hide单词,原因就hi的右边不是空格。