一、概述
当我们想在Java 中构建字符串时,我们通常会选择方便的StringBuilder
来完成这项工作。
假设我们有一个包含一些字符串段的StringBuilder
序列,并且我们想从中删除最后一个字符。在这个快速教程中,我们将探索三种方法来做到这一点。
2. 使用StringBuilder
的deleteCharAt()
方法
StringBuilder
类具有deleteCharAt()
方法。它允许我们在想要的位置移除字符.
deleteCharAt()
方法只有一个参数:我们要删除的char
索引。
因此,如果我们将最后一个字符的索引传递给该方法,我们就可以删除该字符。为简单起见,我们将使用单元测试断言来验证它是否按预期工作。
所以接下来,让我们创建一个测试来检查它是否有效:
StringBuilder sb = new StringBuilder("Using the sb.deleteCharAt() method!"); sb.deleteCharAt(sb.length() - 1); assertEquals("Using the sb.deleteCharAt() method", sb.toString());
如上面的测试所示,我们将最后一个字符的索引( sb.length() -1
) 传递给deleteCharAt()
方法,并期望删除结束的感叹号( !
)。
如果我们运行测试,它就会通过。所以,deleteCharAt()
解决了这个问题。
3. 使用StringBuilder
的replace()
方法
StringBuilder
的[replace()](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuilder.html#replace(int,int,java.lang.String))
方法允许我们用给定的字符串替换序列子字符串中的字符。该方法接受三个参数:
start
索引- 开始索引,包括end
index – 结束索引,排他replacement
- 用于替换的字符串
假设序列中最后一个字符的索引是lastIdx.
如果我们想删除最后一个字符,我们可以传递lastIdx
作为开始索引,lastIdx+1
作为结束索引,以及一个空字符串“”
作为replace()
的替换:
StringBuilder sb = new StringBuilder("Using the sb.replace() method!"); int last = sb.length() - 1; sb.replace(last, last + 1, ""); assertEquals("Using the sb.replace() method", sb.toString());
现在,如果我们试一试,上面的测试就通过了。因此,可以使用replace()
方法来解决问题。
4. 使用StringBuilder
的substring()
方法
我们可以使用StringBuilder
的[substring()](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuilder.html#substring(int,int))
方法从字符串的给定start
和end
索引中获取子序列。该方法需要两个参数,开始索引(包括)和结束索引(不包括)。
值得一提的是substring()
方法返回一个新的String
对象。换句话说,substring()
方法不会修改StringBuilder
对象。
我们可以将0 作为start
索引,将最后一个字符的索引作为end
索引传递给substring()
方法,以获取最后一个字符被截断的字符串:
StringBuilder sb = new StringBuilder("Using the sb.substring() method!"); assertEquals("Using the sb.substring() method", sb.substring(0, sb.length() - 1)); //the stringBuilder object is not changed assertEquals("Using the sb.substring() method!", sb.toString());
如果我们执行它,测试就会通过。
正如我们在测试中看到的,即使substring()
返回的String
没有最后一个字符( !
),原始的StringBuilder
也没有改变。
5. 结论
在这篇简短的文章中,我们学习了如何从StringBuilder
序列中删除最后一个字符。
0 评论