7-4 单词替换 (20分)
设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。
输入格式:
首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。
输出格式:
完成查找替换后的完整字符串
输入样例:
在这里给出一组输入。例如:
Although I am without you, I will always be ou you
ou
with
输出样例:
在这里给出相应的输出。例如:
Although I am without you, I will always be with you
以下是我的代码
import java.util.Scanner;
public class Main {
public static void main(String []args)
{
Scanner scan = new Scanner(System.in);
StringBuilder str = new StringBuilder();
int a = 0;
str = str.append(scan.nextLine());
String str1 = scan.nextLine();
String str2 = scan.nextLine();
do
{
if(str.indexOf(str1) == 0)
{
if(str.charAt(str1.length()) == ' ')
{
str = str.replace(0, str1.length(), str2);
}
System.out.println(str);
break;
}
else if(str.indexOf(str1) > 0)
{
a = str.indexOf(str1,a+1);
if((str.charAt(a-1)==' ') && ((a+str1.length())==str.length()))
{
str = str.replace(a, str1.length()+a, str2);
System.out.println(str);
break;
}
else if((str.charAt(a-1)==' ') && (str.charAt(a+str1.length())==' '))
{
str = str.replace(a, str1.length()+a, str2);
System.out.println(str);
break;
}
}
else
{
System.out.println(str);
break;
}
}while(true);
}
}
package com.solve;
import java.util.Scanner;
//字符串的查找并替换
public class SelectAndReplace {
public static void main(String[] args) {
Scanner in1 = new Scanner(System.in);
Scanner in2 = new Scanner(System.in);
Scanner in3 = new Scanner(System.in);
String sentence = in1.nextLine(); // 输入字符串
String word1 = in2.next(); // 输入查找的单词
String word2 = in3.next(); // 输入替换的单词
StringBuilder sb = new StringBuilder();
Boolean b1 = true, b2 = true;
char[] Array1 = sentence.toCharArray(); // 转换成字符数组
int at1 = sentence.indexOf(word1); // 单词在句中的的位置
// 当将要替换的单词在第一个时
if (at1 == 0 && (Array1[at1 + word1.length()] == ' ' || Array1[at1 + word1.length()] == ',')) {
sb.append(word2);// 将word2放进去
sb.append(sentence.substring(at1 + word1.length()));// 将Word1后面的加进去
b1 = false; // 就不需要进while循环了
}
// 当要替换的单词在中间时
while (b1) {
char[] Array = sentence.toCharArray(); // 转换成字符数组
int at = sentence.indexOf(word1); // 单词在句中的的位置
if (at + word1.length() == sentence.length()) {
break;
}
// 判断找到的第一个目标,查看他的前一位和它的后一位是否符合
if (Array[at - 1] == ' ' && (Array[at + word1.length()] == ' ' || Array[at + word1.length()] == ',')) {
sb.append(sentence.substring(0, at)); // 将Word1前的提出来
sb.append(word2);// 将word2放进去
sb.append(sentence.substring(at + word1.length()));// 将Word1后面的加进去
b2 = false; // 就不需要判断最后一个单词了
break;
} else {// 如果不符合,将字符截断,前面的存入缓冲区,目标后面的字符串保留下来
sb.append(sentence.substring(0, at + word1.length()));
sentence = sentence.substring(at + word1.length());
}
}
// 当要替换的单词在最后一个时
if (b1 && b2) {
sb.append(sentence.substring(0, sentence.length() - word1.length())); // 将Word1前的提出来
sb.append(word2);// 将word2放进去
}
System.out.print(sb);
}
}
你那个点个去了么,我想请教一下,我的代码也总有一个点个不去,显示格式错误,可是我感觉没错误啊
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String string="";
while(in.hasNextLine()){
String s=in.nextLine();
if(s.equals("end")){
break;
}
else{
string=string+s;
}
}
String a=in.nextLine();
String b=in.nextLine();
System.out.println(string.replaceAll(a,b));
}
}
我自己测出来了奥
给你参考一下我的代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String string="";
while(in.hasNextLine()){
String s=in.nextLine();
if(s.equals("end")){
break;
}
else{
string=string+s+"\n";
}
}
String a=in.nextLine();
String b=in.nextLine();
string.replaceAll("\n","");
System.out.print(string.replaceAll(a,b));
}
}