输入一个字符串,以回车结束(字符串长度不超过 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++代码:
1.用stringstream+while循环方法
#include<bits/stdc++.h>
using namespace std;
int main(){
string str;
getline(cin,str);
string a,b;
cin>>a>>b;
stringstream ss(str);
string s;
while(ss>>s){
if(s==a)cout<<b<<" ";
else cout<<s<<" ";
}
return 0;
}
2.利用cin不读入空格的特性:
#include<bits/stdc++.h>
using namespace std;
string str[10000],a,b;
int main(){
int i=0;
while(cin>>str[i]){
char c=getchar();//为了接收空格
if(c=='\n')break;
i++;
}
cin>>a>>b;
for(int j=0;j<=i;j++){
if(str[j]==a)cout<<b<<" ";
else cout<<str[j]<<" ";
}
return 0;
}
JAVA代码:
利用String类的split方法按空格裂成一个字符串数组,然后依次遍历并判断即可。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String str=in.nextLine();
String a=in.next();
String b=in.next();
String s[]=str.split(" ");
for(int i=0;i<s.length;i++) {
if(s[i].equals(a))System.out.print(b+" ");
else System.out.print(s[i]+" ");
}
in.close();
}
}