StringUtils源码理解(下)
本文介绍StringUtils的剩下的两个方法
1.计算两个字符串相似度1.1实现简单介绍实现原理可参考计算字符串相似度算法——Levenshtein
这里的算法区别在于:存差异值的数组由上文中的二维数组,变成这个实现的两个一维数组,并通过不断的交换数值来实现。
1.2源码理解public static String stripAccents(String input) {}
在这个方法的注释里面,写到java1.6 用到的是java.text.Normalizer,java1.3-1.5用的是sun.text.Normalizer。
同时建议让我们去参考Lucene2.9? 的ASCIIFoldingFilter。
2.1带口音的字符从哪里来首先ASCII码是八位,但是只用到0-127,最高位是用于校验,128-255被用到这样‘?’,’?‘ 的字符,未收录ASCII中。所以这个方法是将这些带有口音的字符变成标准的(a-z)|(A-Z)。
举例:前面是ascII编码,后面是字符
226:a
227:?
228:?
229:?
230:?
231:?
232:è
233:é
234:ê
这个源码对我来说不容易看,对字符编码之间的转换不理解,看源码会有点吃力,费很多时间,所以就不看了,实现的话,大概就是先把需要转换的部分转换成标准编码,再删除多余的字符。java的字符编码是UTF-8,所以应该变为UTF-8。
3.结束StringUtils看完了,这两个方法查了不少东西才看下来,同时也学了很多。
?
?
?
?