千家信息网

java字符串替换如何实现

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"java字符串替换如何实现"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"java字符串替换如何实现"文章能帮助大家解决问题。字符串处理在程序
千家信息网最后更新 2026年11月03日java字符串替换如何实现

这篇文章主要介绍"java字符串替换如何实现"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"java字符串替换如何实现"文章能帮助大家解决问题。

字符串处理在程序猿日常工作工作中非常常见,常见到几乎各种语言中都已经封装好了字符串相关的API,我们只需要直接拿过来用就好。就拿Java为例,jdk中的String()类几乎封装了所有字符串相关的操作,其方法数量有近百个,几乎满足了程序猿所有字符串相关的操作。
正是因为这么方便,估计大多数Java程序猿都没自己实现过字符串的replace。这里正式引入一下今天的精选面试题:不依赖第三方库 实现一个字符串替换replace(String str, String target, String replacement)函数,其功能是将str中所有的target替换为replacement。 其实这道题并不涉及任何复杂或者高深的算法,只需要掌握基本的编程就可以做,但当我某次把这道题拿出来面试某个应届生时,他代码写的磕磕绊绊的,后来我也陆陆续续用这题考过好几个人,鲜有顺畅写出来的,是我低估了这道题的难度??

解题思路

回到题目本身,我多说两句,仔细想想这道题其实也很简单,然而这就难倒了一大批人,大家刷面试题前还是要先打好编程基础。 这题的解题思路也很简单,我们新建个StringBuilder,只需要把str中不是target的部分加进去,如果是遇到target,就把replacement字符串加进去,真的没有任何复杂的算法 就是单纯考你编程的基本功,代码如下。

    public static String replace(String str, String target, String replacement) {        // 正常这里需要对str,target,replacement做输入校验,这里我省略, 比如str比target端的时候可以直接返回空字符串          StringBuilder res = new StringBuilder();        for (int i = 0; i < str.length(); ) {            if (isMatch(str, i, target)) {                i += target.length();  // 如果匹配,需要直接向前跳target.length                  res.append(replacement);                continue;            }            res.append(str.charAt(i++));        }        return res.toString();    }    // 单纯确认从str的pos位置开始,是否和target相匹配      private static boolean isMatch(String str, int pos, String target) {        for (int i = 0; i < target.length() && i + pos < str.length(); i++) {            if (str.charAt(i + pos) != target.charAt(i)) {                return false;            }        }        return true;    }

看吧,代码其实没啥难度,但咋就好多明显刷过其他面试题的人都不会呢!!!

Jdk中的replace实现

估计大多数人都没看过Jdk中的实现,所以顺带我们来欣赏下java String类中的replace方法是如何实现的。

    public String replace(CharSequence target, CharSequence replacement) {        String tgtStr = target.toString();        String replStr = replacement.toString();        int j = indexOf(tgtStr);        if (j < 0) {            return this;        }        int tgtLen = tgtStr.length();        int tgtLen1 = Math.max(tgtLen, 1);        int thisLen = length();        int newLenHint = thisLen - tgtLen + replStr.length();        if (newLenHint < 0) {            throw new OutOfMemoryError();        }        StringBuilder sb = new StringBuilder(newLenHint);        int i = 0;        do {            sb.append(this, i, j).append(replStr);   // 先把未匹配字符添加进去,然后直接添加replStr              i = j + tgtLen;        } while (j < thisLen && (j = indexOf(tgtStr, j + tgtLen1)) > 0);  // 找到下一个匹配的下标         return sb.append(this, i, thisLen).toString();    }

jdk中的思路和我们上面写的思路是一致的,但jdk的代码更为精简,其实jdk也没用啥高深的东西,只是在indexOf()中考虑了更多数据编码的问题。

关于"java字符串替换如何实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

字符 字符串 代码 思路 方法 知识 程序 编程 复杂 更多 算法 行业 问题 难度 高深 封装 工作 不同 明显 顺畅 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国互联网科技工作委员会毛军 互联网科技社 上海挚品互联网科技 互联网科技公司电话 北京禾田雨橡互联网科技 唐信互联网科技 大连 山东吉时兔互联网科技有限公司 玖二柒互联网科技公司待遇 西藏七维空间互联网科技有限公司 须眉科技是互联网公司吗 现代互联网科技股 湖北码尼互联网科技有限公司电话 晓花互联网科技有限公司网址 链环科技传统企业怎么转型互联网 河南住房之家互联网科技 西安小鹰速贷互联网科技有限公司 上海京穆互联网科技有限公司 银行科技岗属于互联网吗 中国新注册互联网科技 科技互联网经济论坛 互联网 科技公司 华中科技大学互联网 华脉科技工业互联网产品 农村开互联网科技讲堂 互联网时代的科技公司 产业互联网科技服务公司 互联网相关科技技术 北京互联网科技类企业分布 互联网时代高科技布局 科技美学互联网 艺术
0