org.springframework.util.StringUtils字符替换方法解析
2018-03-17 19:50
435 查看
网上已经有很多类似的,写上一篇属于自己的理解。
先上源码:
整体分为3部分
1. 验证参数
(1) 参数为空返回inSring
(2) 获取要oldPattern第一次出现位置,没有出现过返回inSring
2. 初始化StringBuilder(线程不安全,高效)
(1) 获取初始化StringBuilder长度
① 读取inString长度记为index
② 当newpattern长度大于oldpattern index加16
注:+16为了可以直接存放下替换后的字符串,节省一次StringBuilder扩容操作
为什么加16而不是算出精确字符个数
个人理解:1.通常替换字符串长度都不会超出16字符,2.超过16字符再去算出扩容的精确大小,过于麻烦,还不如直接进行StringBuilder扩容操作
3. 循环index进行截取拼接等操作
扩展内容:
StringBuilder扩容尝试将新容量扩为大小变成2倍+2 if 判断一下 容量如果不够,直接扩充到需要的容量大小;详情请查看 http://www.cnblogs.com/Coffee-guy/p/3392264.html
先上源码:
整体分为3部分
1. 验证参数
(1) 参数为空返回inSring
(2) 获取要oldPattern第一次出现位置,没有出现过返回inSring
2. 初始化StringBuilder(线程不安全,高效)
(1) 获取初始化StringBuilder长度
① 读取inString长度记为index
② 当newpattern长度大于oldpattern index加16
注:+16为了可以直接存放下替换后的字符串,节省一次StringBuilder扩容操作
为什么加16而不是算出精确字符个数
个人理解:1.通常替换字符串长度都不会超出16字符,2.超过16字符再去算出扩容的精确大小,过于麻烦,还不如直接进行StringBuilder扩容操作
3. 循环index进行截取拼接等操作
扩展内容:
StringBuilder扩容尝试将新容量扩为大小变成2倍+2 if 判断一下 容量如果不够,直接扩充到需要的容量大小;详情请查看 http://www.cnblogs.com/Coffee-guy/p/3392264.html
相关文章推荐
- org.springframework.util.StringUtils 方法commaDelimitedListToStringArray(String str)
- org.springframework.util.StringUtils 使用
- org.springframework.util.StringUtils 使用
- org.springframework.util.StringUtils使用
- java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.isPresent(Ljava/lang/String;Ljava/l
- java把html标签字符转换,我用了spring 包中的 org.springframework.web.util.HtmlUtils
- org.springframework.util.StringUtils的使用
- java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.isPresent(Ljava/lang/String;Ljava/l
- org.springframework.util.StringUtils的使用
- org.springframework.util.StringUtils的使用
- org.springframework.util.StringUtils处理字符串
- org.springframework.util.Assert 这个类,叫方法入参检测工具类
- spring的反射工具类——org.springframework.util.ReflectionUtils
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible(Ljava/lang/refl
- 关于java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible
- 关于java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible
- org.springframework.web.util.HtmlUtils 可以实现HTML标签及转义字符之间的转换。
- 问题 : lang.NoClassDefFoundError: org/springframework/core/annotation/AnnotatedElementUtils,的解决方法
- 关于java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccessible
- maven+springmvc 中tomcat启动报java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.getMethod