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中汉字字符转化为英文字符 #### 知识点概览 本文将详细介绍如何在Java中实现汉字到英文字符的转换。此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr`...
将小写数字变大写 如 输入1234567 可以输出一二三四五六七
Java中文字符编码探究 Java中文字符编码探究是Java开发者经常遇到的问题之一。在处理中文时,乱码问题是无法避免的。这篇论文通过大量的实验和编码知识支持,探索了Java在不同介质中对汉字的编码,解决了以不同字符...
首先,我们需要了解的是Java中的字符编码。在Java中,默认使用Unicode编码,它能够包含世界上大部分字符,包括汉字。Unicode编码下,每个汉字通常由一个或多个码点(code point)表示。汉字转拼音的过程中,我们需要...
在Java编程环境中,处理中文字符并将其转换为拼音是一项常见的需求,特别是在文本处理、搜索、语音合成等领域。本文将深入探讨Java中实现汉字转拼音的方法,重点介绍Pinyin4j库及其使用技巧。 Pinyin4j是一个专门为...
里面含有各种车牌上的数字、字母、汉字,适用于车牌识别训练
在Java中,可以通过`toCharArray()`方法将字符串转换为字符数组,以便逐个字符地进行处理。例如: ```java char[] chars = cnStr.toCharArray(); ``` 这里`cnStr`代表待处理的字符串。 #### 2. 获取单个字符的笔画...
【标题】"JAVa 汉子验证码" 涉及的知识点主要集中在Java编程语言上,特别是关于验证码的生成与验证技术。验证码(CAPTCHA)是一种防止自动化程序(如机器人)非法操作的手段,比如防止恶意注册、刷票等。在本案例中...
在Oracle数据库环境中,有时我们需要处理包含非数字字符的字段,并将其转换为数字进行计算或统计。根据提供的文件信息,本文将详细介绍如何实现“oracle非数字合计”,即将字段中含有汉字或其他非数字字符的数据自动...
在Java编程语言中,将汉字转换为拼音是常见的需求,特别是在处理中文数据、搜索功能、文本分析或生成可搜索的关键词时。以下是一些关于Java实现汉字转拼音的知识点: 1. **Java拼音库**: - 在Java中,我们可以...
Java常用数字工具类 数字转汉字 Java常用数字工具类是指在Java编程语言中,用于实现数字转换为汉字的功能。这种工具类可以将数字转换为汉字,例如将数字21转换为汉字“二十一”。在Java中,实现数字转换为汉字的...
sql 字符转换数值,适合刚入门的朋友,一看即明白,里面有详细的例子。
- **`setToneType()`**: 设置声调类型,可以选择 `WITH_TONE_MARK`(使用数字标记声调)、`WITH_TONE_NUMBER`(在音节后添加数字表示声调)或 `WITHOUT_TONE`(不包含声调)。 - **`setVCharType()`**: 设置“ü”...
### 8×8 LED点阵显示数字与字符详解 #### 实验目的与效果 本实验旨在帮助学习者掌握8×8 LED点阵显示技术的基本原理及应用方法,并通过实际操作来展示0~9数字、26个英文字母以及一些有趣的图案在8×8 LED点阵上的...
在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...
3. **字符集选择**:在生成随机字符时,需要定义一个字符集,比如ASCII码表中的字母、数字或特殊符号。根据需求,可以选择不同的字符集,如小写字母`"abcdefghijklmnopqrstuvwxyz"`,大写字母`...
基于单片机protues仿真的LED点钟汉子、数字显示系统设计(仿真图、源代码) 该设计为单片机protues仿真的LED点钟汉子、数字显示系统,实现LED点钟汉子、数字显示; 功能实现如下: 1、系统使用51单片机为核心控制; ...
它定义了128个不同的字符,包括英文大小写字母、数字、标点符号和一些控制字符,每个字符对应一个7位的二进制数,即128种可能的组合。在十六进制表示中,ASCII字符通常是一个字节,即8位二进制,转换成16进制后是00...
在Java编程语言中,将数字转换为大写数字输出是一个常见的需求,特别是在处理财务、会计等领域,需要将数值以规范的格式展示。本篇将详细讲解如何实现这一功能,通过一个简单的Java小示例来说明。 首先,我们需要...
"易语言数字转化为汉字"的主题涉及到易语言中的字符串处理和类型转换技术。 易语言是一种面向对象、可视化编程的中文编程环境,它的设计目标是让编程更加简单、直观。在易语言中,实现数字到汉字的转化主要依赖于...