stringbuilder不支持直接删/插单字符,但提供deletecharat()、delete()、insert()等索引操作方法;删需防越界,插需位置合法;replace()可简洁实现字符替换;动态修改时须注意长度变化及空值处理。

StringBuilder 是 Java 中可变字符串的高效工具,它不支持直接“删除某个字符”或“插入到某位置”的单字符操作,但提供了灵活的 delete()、deleteCharAt()、insert() 等方法,通过索引控制实现精准修改。
删除字符:按位置或范围删
删除操作依赖下标(从 0 开始),注意越界会抛 StringIndexOutOfBoundsException:
-
deleteCharAt(int index):删指定位置的单个字符。例如:sb.deleteCharAt(2);→ 删除第 3 个字符(索引 2) -
delete(int start, int end):删 [start, end) 区间内的字符(含头不含尾)。例如:sb.delete(1, 4);→ 删除索引 1、2、3 处的字符(共 3 个) - 想删掉所有某个字符?需先用
indexOf()找位置,再循环删(注意删后索引偏移,建议倒序删或用replace()替代)
插入字符:在指定位置加内容
insert() 方法可在任意位置插入 char、String 或其他类型(自动转字符串):
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
insert(int offset, char c):在offset位置前插入一个字符。例如:sb.insert(0, 'X');→ 在开头插入 'X' -
insert(int offset, String str):插入字符串,如sb.insert(3, "abc")→ 在索引 3 前插入 "abc" - 插入位置不能超过当前长度(允许等于长度,即追加),否则报错
组合操作:删+插实现“替换”或“修改”
没有原生 replaceCharAt,但可用 delete + insert 模拟:
- 把索引 2 的字符换成 'Z':
sb.deleteCharAt(2).insert(2, 'Z'); - 更简洁写法(链式调用):
sb.replace(2, 3, "Z");——replace(start, end, str)更适合这种场景 - 注意:
replace()实质是delete(start, end)+insert(start, str),语义更清晰
实用提醒:操作前后检查长度
所有基于索引的操作都依赖当前 StringBuilder 长度,动态修改时容易出错:
- 执行删/插后,后续索引可能变化,避免硬编码多个固定下标
- 不确定长度时,先用
length()判断,比如删最后一个字符:if (sb.length() > 0) sb.deleteCharAt(sb.length() - 1); - 插入空字符串或 null 会变成字符串 "null",必要时先判空
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










