Java 什么';删除字符串最后一个字符的好方法是什么?

Java 什么';删除字符串最后一个字符的好方法是什么?,java,Java,删除字符串第二个最后一个字符的简明方法是什么 e、 g.“abcde”变为“abce” 无需检查字符串是否足够长。获取除最后两个字符以外的所有字符,获取最后一个字符并将它们连接起来。假设字符串至少为2个字符,则代码很简单 警告:这不测试手前的长度,但这是您要求的 String input = "abcde"; int length = input.size(); String result = input.substring(0, length - 2) + input.substring(l

删除字符串第二个最后一个字符的简明方法是什么

e、 g.“abcde”变为“abce”


无需检查字符串是否足够长。

获取除最后两个字符以外的所有字符,获取最后一个字符并将它们连接起来。假设字符串至少为2个字符,则代码很简单

警告:这不测试手前的长度,但这是您要求的

String input = "abcde";
int length = input.size();
String result = input.substring(0, length  - 2) + input.substring(length, length);

当然,这不提供空检查或长度检查(必须至少为2个字符)。

获取最后2个位置=
str.length-2

public static String removeCharAt(String s, int pos) {
       StringBuffer buf = new StringBuffer( s.length() - 1 );
       buf.append( s.substring(0,pos) ).append( s.substring(pos+1) );
       return buf.toString();
}

我怀疑这是最快、最紧凑、最容易理解的

"abcde".replaceAll ("(.*).(.)", "$1$2") 

它使用正则表达式,搜索一些我们以后要称为$1的字符,加上一个要忘记的字符,以及另一个要记住的终止字符,作为字符串2($2)。

如何定义“好”?最好的表现?最少的代码行数?最容易理解?堆栈溢出不是这样工作的。。。我们在这里力求明确。如果要采用这种方法,至少应该使用
StringBuilder
-1将字符串连接到循环中。使用StringBuilder。@洛德托加默斯,谢谢,实际上不知道字符串生成器,更好吗?@RogerLindsjö也-循环的问题是每次连接都会创建一个新的
字符串
?@Alex是的,每次通过循环进行连接时,实际上是这样做的:字符串=新的StringBuilder(字符串).append(addString).toString();删除我的反对票,因为你更新了答案。
public String getAllButSecondLast(final String input)
{
  return input.substring(0, input.length() - 2) + input.charAt(input.length() - 1);

}
public static String removeCharAt(String s, int pos) {
       StringBuffer buf = new StringBuffer( s.length() - 1 );
       buf.append( s.substring(0,pos) ).append( s.substring(pos+1) );
       return buf.toString();
}
return new StringBuilder(str)
  .deleteCharAt(str.length() - 2)
  .toString();
"abcde".replaceAll ("(.*).(.)", "$1$2")