【JDK源码】String的replace方法源码解析--step by step
来源:互联网 发布:软件研发分包管理制度 编辑:程序博客网 时间:2024/06/06 04:16
/* * JDK 1.8 * * @param oldChar the old character. * * @param newChar the new character. * * @return a string derived from this string by replacing every occurrence * of {@code oldChar} with {@code newChar}. */ public String replace(char oldChar, char newChar) { /* value 为当前字符串对象的字符数组名 如果新替换的字符与老字符相同,直接返回当前字符串对象 */ if (oldChar != newChar) { int len = value.length;// 获取字符串的长度 int i = -1; char[] val = value; // 新建一个字符数组val引用指向value字符数组,用于 // 此while循环的目的是找出要被替换的第一个字符在字符数组中的下标位置 while (++i < len) { /* 当找到第一个被替换的字符时,跳出while循环 * 得到了下标i的值,也就是第一个要替换的位置 * 如果到最后没有找到替换的值,那么跳出循环,i的值将与len一样 * 即不会进入下面的if判断,直接返回当前字符串 */ if (val[i] == oldChar) { break; } } //当i的值比当前字符串长度len小的时候 if (i < len) { //使用当前字符串的长度新创建一个字符数组buf char buf[] = new char[len]; //对下标在i之前的值不需要替换的字符循环赋值给新数组buf for (int j = 0; j < i; j++) { buf[j] = val[j]; } //此处循环是对字符进行替换 while (i < len) { //没有i++之前把先找到要替换的字符赋值给c char c = val[i]; /*判断从找到第一个要替换的字符以后 后面的字符是否有与老字符相同的, 如果有,那么把相同的字符替变成新字符,并赋值给buf字符数组 如果不相同,那么就把老字符赋值到buf字符数组中去。 */ buf[i] = (c == oldChar) ? newChar : c; //给i+1,直到i>=len,遍历完val最后一个字符后 跳出循环 i++; } //把buf变成字符串返回出去 return new String(buf, true); } } return this; }
水平有限,有问题请留言相告。
阅读全文
0 0
- 【JDK源码】String的replace方法源码解析--step by step
- Hadoop 源码编译 step by step 最简洁的步骤
- 深入MySQL源码—Step By Step
- Glassfish源码编译 step by step
- muduo网络库源码阅读Step by Step
- Step By Step(C++模板解析)
- 编译android源码学习的First Step
- Step By Step(Java 系列的目录)
- SSH2 Step by Step- Step 2 Hibernate的配置
- NHibernate Step by Step
- OGRE step by step
- step by step
- MinGW Step by Step
- 大杂烩---Step by Step
- sphinx4 STEP BY STEP
- EJB step by step
- NHibernate Step by Step
- Django Step by Step
- codeforces 858F&&JZOJ5404graph dfs
- 纯css制作tab选项卡(一)
- JavaScript 版数据结构与算法(二)队列
- sqlserver中如何设置两个自动增长的表示列
- 三点估算法
- 【JDK源码】String的replace方法源码解析--step by step
- sqlserver权限设计
- 用construct2制作的血腥射击游戏
- aapt 命令查看apk包名、主activity、版本等信息
- 火易文化传媒|太原动漫游戏设计开发工作室-火易教育
- http响应码明细
- 怎么将导出的sql文件再次导入到数据库?
- 搜狐狐友通过增加知名度增加用户量
- caffe在ubuntu16.04安装遇到的问题及解决方法(CPU ONLY)