读书人

StringUtils源码理解(上)

发布时间: 2012-08-31 12:55:03 作者: rapoo

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:ê

2.2源码理解

这个源码对我来说不容易看,对字符编码之间的转换不理解,看源码会有点吃力,费很多时间,所以就不看了,实现的话,大概就是先把需要转换的部分转换成标准编码,再删除多余的字符。java的字符编码是UTF-8,所以应该变为UTF-8。

3.结束

StringUtils看完了,这两个方法查了不少东西才看下来,同时也学了很多。

?

?

?

?

读书人网 >编程

热点推荐