如何在Java中删除字符串中的最后一个字符

553 阅读2分钟

通过简单易懂的例子,学习如何在Java中删除字符串中的最后一个字符。同时,学习如何处理字符串和空字符串。

1.使用String.substring()

这是最直接的技术。substring()方法返回起始结束索引之间的子串。

请注意,这个方法不检查null 字符串。它也没有检查字符串的长度,所以如果我们传递一个空字符串,那么我们可能会得到IndexOutOfBoundsException 。我们最好自己写一个方法来处理这两种情况。可以自由地定制这个方法,处理更多的情况,如不可打印的字符

public static String removeLastChar(String s) {
  return (s == null || s.length() == 0)
      ? null
      : (s.substring(0, s.length() - 1));
}

现在我们可以对任何类型的字符串使用这个方法。

newStr = removeLastChar(null);		//returns null
newStr = removeLastChar("");			//returns null
newStr = removeLastChar("a");			//returns "" empty string
newStr = removeLastChar("abcd");	       //returns "abc"

2.使用StringUtils.chop()

StringUtils类是Apache Commons Lang库的一部分,如果还没有的话,请添加它。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

StringUtils.chop()返回一个新的字符串,其最后一个字符已被删除。这种技术是无损的,也可以处理空字符串

另外,请注意,如果字符串以\r\n 结尾,那么它将删除这两个字符。

newStr = StringUtils.chop(null);		//returns null
newStr = StringUtils.chop("");			//returns "" empty string
newStr = StringUtils.chop("a");			//returns "" empty string
newStr = StringUtils.chop("abcd");	//returns "abc"

3.如果字符值匹配,则删除最后一个字符

在某些情况下,我们可能只想在最后一个字符匹配或不匹配任何特定字符的情况下删除它。我们可以使用Guava的CharMatcher类来实现。

如果还没有,请将Guava加入到项目中。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.1-jre</version>
</dependency>

使用CharMatcher类,如果字符串的最后一个字符符合给定的条件,就将其删除。

String string = "abcdE";
String newStr = CharMatcher.is('E').trimTrailingFrom(s);

我们也可以使用CharMatcher来删除断裂的空白。

String newStr = CharMatcher.breakingWhitespace().trimTrailingFrom(s);

4.总结

在这个简短的Java教程中,我们学习了一些从String中删除最后一个字符的技术,可以使用索引或只使用匹配条件。我们看到这些方法如何处理空值和空值。