Java中substring()越界直接抛StringIndexOutOfBoundsException,需用Math.min()校验边界;replace()为字面替换,replaceAll()支持正则需转义;trim()仅处理ASCII空白。

如何使用 String 类的常用方法进行字符串裁剪与替换

substring() 裁剪字符串时索引越界会直接抛异常

Java 中 substring() 不像 Python 的切片那样容忍越界,beginIndex 小于 0 或大于 String.length(),或 endIndex 小于 beginIndex,都会触发 StringIndexOutOfBoundsException

实操建议:

replace() 和 replaceAll() 的行为差异远不止正则支持

replace() 只做字面量替换,参数是 charCharSequencereplaceAll() 底层调用 Pattern.compile().matcher().replaceAll(),第一个参数是正则表达式。

常见错误现象:

trim() 只去首尾 ASCII 空白,中文空格和全角空格完全无效

trim() 的判定逻辑是 c <= ' '(即 Unicode 值 ≤ 32),所以它对中文空格(U+3000)、全角空格(U+FFEF)、甚至  (U+00A0)都无感。

使用场景与替代方案:

concat() 和 + 拼接在循环里性能差别极大

单独一次拼接,str.concat("suffix")str + "suffix" 编译后几乎一样;但在循环中反复拼接,问题就来了。

关键影响:

容易被忽略的一点:字符串裁剪和替换操作本身不修改原字符串,但频繁创建中间字符串对象,GC 压力比想象中大,尤其在内存受限环境(如 Android 后台服务)。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。