import java.text.NumberFormat; import java.util.Locale; /** * 比较两个字符串的相似度 * zhouguohui */ public class test { public static void main(String[] args) { String strA = "123456789"; String strB = "987654321"; double result = SimilarDegree(strA, strB); if (result >= 0.7) { System.out.println("相似度很高!" + similarityResult(result) + result); } else { System.out.println("相似度不高" + similarityResult(result) + result); } System.out.println(); } /** * 相似度转百分比 */ public static String similarityResult(double resule) { return NumberFormat.getPercentInstance(new Locale("en ", "US ")) .format(resule); } /** * 相似度比较 * @param strA * @param strB * @return */ public static double SimilarDegree(String strA, String strB) { String newStrA = removeSign(strA); String newStrB = removeSign(strB); int temp = Math.max(newStrA.length(), newStrB.length()); int temp2 = longestCommonSubstring(newStrA, newStrB).length(); return temp2 * 1.0 / temp; } /** * 字符串过滤,除去不是汉字 字母 数字以外的特殊字符 * @param str * @return */ private static String removeSign(String str) { StringBuffer sb = new StringBuffer(); for (char item : str.toCharArray()) if (charReg(item)) { sb.append(item); } return sb.toString(); } /** * 判断是不是汉字 字母 数字 * @param charValue * @return */ private static boolean charReg(char charValue) { return (charValue >= 0x4E00 && charValue <= 0X9FA5) || (charValue >= 'a' && charValue <= 'z') || (charValue >= 'A' && charValue <= 'Z') || (charValue >= '0' && charValue <= '9'); } private static String longestCommonSubstring(String strA, String strB) { char[] chars_strA = strA.toCharArray(); char[] chars_strB = strB.toCharArray(); int m = chars_strA.length; int n = chars_strB.length; int[][] matrix = new int[m + 1][n + 1]; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (chars_strA[i - 1] == chars_strB[j - 1]) matrix[i][j] = matrix[i - 1][j - 1] + 1; else matrix[i][j] = Math.max(matrix[i][j - 1], matrix[i - 1][j]); } } char[] result = new char[matrix[m][n]]; int currentIndex = result.length - 1; while (matrix[m][n] != 0) { if (matrix[n] == matrix[n - 1]) n--; else if (matrix[m][n] == matrix[m - 1][n]) m--; else { result[currentIndex] = chars_strA[m - 1]; currentIndex--; n--; m--; } } return new String(result); } }
相关推荐
利用字符间的转化把汉字转化为英文字符主要应用于提取汉字的首字母等要求
java汉子转拼音,内含例子和jar;java汉子转拼音,内含例子和jar;
将小写数字变大写 如 输入1234567 可以输出一二三四五六七
里面含有各种车牌上的数字、字母、汉字,适用于车牌识别训练
Java语言中的中文转拼音库及工具类; Pinyin4j [1] 是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。
计算汉字笔画数,用java实现 计算汉字笔画数,用java实现
java中经常用到汉字转成拼音首字母、拼音全拼的,分享一下
sql 字符转换数值,适合刚入门的朋友,一看即明白,里面有详细的例子。
oracle非数字合计,将字段中含有汉子的数据自动转换为 数字0
8×8LED点阵显示数字与字符,使用说明
主要为大家详细介绍了Java常用数字工具类,数字转汉字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在DOS下或者单片机应用中,要显示较少的汉字和全角字符,为了节省空间,通常是建立小字库。而建立小字库第一步就是提取程序中需要显示的汉字。由于是在源程序中检索,必须考虑绕过程序中用于注释的汉字。提取C语言中...
深入分析 Java 中的中文编码问题(1) - Java综合 - Java - ITeye论坛.mht
输入两行字符串,不同的字符异色显示出来,具有数字,英文,汉子的识别功能
可以将汉字转换成拼音返回
汉子识别源代码,采用C++语言,英文字符、汉字识别源代码!
实现汉子验证码功能的 源代码 ,有兴趣的朋友可以下来看看
输入汉子字符串后,自动获取汉子字符串拼音头
java输入数字转换成对应的大写数字输出,简单小demo