java:字符串编辑

题目

问题描述
  从键盘输入一个字符串(长度<=40个字符),并以字符 ’.’ 结束。编辑功能有:
  1 D:删除一个字符,命令的方式为: D a 其中a为被删除的字符,例如:D s 表示删除字符 ’s’ ,若字符串中有多个 ‘s’,则删除第一次出现的。
  2 I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 ’s’ 的前面插入字符 ‘d’ ,若原串中有多个 ‘s’ ,则插入在最后一个字符的前面。
  3 R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。
  在编辑过程中,若出现被改的字符不存在时,则给出提示信息。
输入格式
  输入共两行,第一行为原串(以’.’结束),第二行为命令(输入方式参见“问题描述” 。
输出格式
  输出共一行,为修改后的字符串或输出指定字符不存在的提示信息。
样例输入
This is a book.
D s
样例输出
Thi is a book.

思考

StringBuffer delete(int startIndex,int endIndex)
delete(int starIndex,int endIndex)从当前StringBuffer对象的字符序列中删除一个子字符序列,并返回当前对象的引用。删除的子字符序列由下表startInedx和endIndex指定:从startIndex到endIndex-1位置处的字符序列被删除。
deleteCharAt(int index)方法删除当前StringBuffer对象实体的字符序列中的index位置处的一个字符

StringBuffer insert(int index,String str)
insert方法将参数str指定的字符序列插入到参数index指定的位置并返回当前的引用

StringBudder replace(int startIndex,int endIndex,String str)
一个子字符序列用参数str指定的字符序列替换。从startIndex,到endIndex-1,返回当前对象的引用

上面是一些操作的方法,其实还有一个重要的是以.结束这个怎么表示

觉得最后输出不输出这个就应该可以

那些字符串并不知道所需要的位置在哪,所以还是要用String,这样进行判断字符

java 实体字段添加引号 注解_System


java 实体字段添加引号 注解_java 实体字段添加引号 注解_02


java 实体字段添加引号 注解_字符串_03


java 实体字段添加引号 注解_System_04

java 实体字段添加引号 注解_java_05

import java.util.Scanner;

public class 字符串编辑 {
	public static String s1;//为下面的字符输入做准备
	public static String s2;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		String str=sc.nextLine();//原数据
		String s=sc.next();//操作命令
		if(s.equals("D"))//如果只是删除就只需要一个字符,其他操作要两个字符
			//为什么这里不能用==,因为存放引用和内存地址都有区别,要是用equals
			s1=sc.next();
		else{
			s1=sc.next();
			s2=sc.next();
		}
			
		switch(s){
		case "D":
			str=str.replaceFirst(s1,"");//把第一次出现s1的地方删除
			break;
		case "I"://插入
			if(str.indexOf(s1)==-1){//当插入到的字符不存在时
				System.out.println("字符不存在");
				break;
			}
			int temp=str.lastIndexOf(s1);//存储从最后面检索到的第一次出现s1的位置
			String s3=str.substring(0, temp);//s3表示复制了str从开始到temp-1位置的字符串
			str=s3.concat(s2).concat(str.substring(temp));//s3后面加上添加的字母,之后再添加后面应有的字母
			break;
		case "R"://替换
			if(str.indexOf(s1)==-1){
				System.out.println("字符不存在");
				break;
			}
			str=str.replaceAll(s1,s2);//替换多个s1
			break;
		}
		System.out.println(str);
	}

}