我想删除一个动词的最后两个字母,并使用StringBuilder将其缀合

时间:2019-01-29 11:23:56

标签: java stringbuilder

所有内容均在注释中说明

Scanner sc=new Scanner(System.in);

//asking for the verb
System.out.println("Donnez un verbe regulier du premier groupe :");

//putting the verb in the string
String chaine=sc.nextLine();

//taking the two last elements
char first=chaine.charAt(chaine.length());
char second=chaine.charAt(chaine.length()-1);

//creating a StringBuilder:
StringBuilder sb=new StringBuilder();

//putting string in the builder :
sb.append(chaine);

//deleting the two last characters :
sb.deleteCharAt(sb.length()-1);


//printing elemnts :
System.out.println("Je "+sb.append("e"));
System.out.println("Tu "+sb.append("es"));
System.out.println("Il/Elle "+sb.append("e"));
System.out.println("nous "+sb.append("ons"));
System.out.println("vous "+sb.append("ez"));
System.out.println("Ils/Elles "+sb.append("ent"));

我得到了StringIndexOutOfBoundsException

根据您的问题,我可以提供更多帮助。

2 个答案:

答案 0 :(得分:4)

String radical = chaine.replaceFirst("..$", "");

System.out.println("Je " + radical + "e");
System.out.println("Tu " + radical + "es");
System.out.println("Il/Elle " + radical + "e");
System.out.println("Nous " + radical + "ons");
System.out.println("Vous " + radical + "ez");
System.out.println("Ils/Elles " + radical + "ent");

这使用正则表达式replaceFirst。模式:

  • .任何字符
  • .任何字符
  • $字符串结尾

因此:最后两个字母被空字符串替换。

相对于chaine.substring(0, chaine.length() - 2)的次要优势 对于空字符串或一个字母的字符串,不会发生索引错误; 它不能替代。可以肯定substring更快。

答案 1 :(得分:2)

您的代码中充满了错误。 首先:

char first=chaine.charAt(chaine.length());
char second=chaine.charAt(chaine.length()-1);

将抛出异常,因为chaine的最后一个字符是chaine.length()-1。所以你应该写:

char first=chaine.charAt(chaine.length()-1);
char second=chaine.charAt(chaine.length()-2);

或者也许:

char first=chaine.charAt(chaine.length()-2);
char second=chaine.charAt(chaine.length()-1);

但是您似乎并没有对firstsecond做任何事情。

接下来,StringBuilder.append会将参数附加到生成器,我认为那不是您想要的。

也许您想做:

String prefix = chaine.substring(0, chaine.length()-2);

System.out.println("Je " + prefix + "e");
System.out.println("Tu " + prefix + "es");
System.out.println("Il/Elle " + prefix + "e");
System.out.println("Nous " + prefix + "ons");
System.out.println("Vous " + prefix + "ez");
System.out.println("Ils/Elles " + prefix + "ent");