
本文介绍在java中对5字符字符串进行反转后,安全移除首尾字符的实用方法,重点使用stringbuilder提升性能,并强调边界检查以避免运行时异常。
本文介绍在java中对5字符字符串进行反转后,安全移除首尾字符的实用方法,重点使用stringbuilder提升性能,并强调边界检查以避免运行时异常。
在处理固定长度(如5字符)的字符串时,常见需求是先反转字符串,再提取“中间部分”——即去除反转后的首字符和尾字符,等价于保留原字符串反转后的第2至倒数第2个字符。由于字符串不可变,直接操作String会产生多次对象拷贝;而StringBuilder提供可变、高效的操作接口,是更优选择。
以下为推荐实现方式:
public static String reverseAndTrimMiddle(String input) {
// 安全性校验:确保输入非空且长度为5
if (input == null || input.length() != 5) {
throw new IllegalArgumentException("Input must be a non-null 5-character string");
}
// 使用 StringBuilder 反转 + substring 截取索引1到length-1(即去掉首尾)
return new StringBuilder(input)
.reverse()
.substring(1, input.length() - 1); // 对5字符字符串,等价于 substring(1, 4)
}调用示例:
System.out.println(reverseAndTrimMiddle("Hello")); // 输出 "lle"
// 解释:
// "Hello" → 反转为 "olleH" → substring(1, 4) → "lle"(索引1='l', 2='l', 3='e')⚠️ 注意事项:
-
substring(int beginIndex, int endIndex)的endIndex是不包含的,因此substring(1, 4)正确获取3个字符; - 必须在调用前校验字符串长度,否则对短于5字符的输入会抛出
StringIndexOutOfBoundsException; - 若需支持任意长度字符串(≥3),可将硬编码的
5替换为input.length(),并增加if (input.length() 判断; - 避免使用
String.toCharArray()+ 循环复制等低效方式——StringBuilder.reverse()底层基于数组原地交换,时间复杂度 O(n),空间开销最小。
综上,结合 StringBuilder.reverse() 与 substring() 是兼顾可读性、性能与健壮性的最佳实践。

















