`
hui_jing_880210
  • 浏览: 43612 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 汉子 字符 数字 相识度比较

    博客分类:
  • java
 
阅读更多
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中汉字字符转化为英文字符 #### 知识点概览 本文将详细介绍如何在Java中实现汉字到英文字符的转换。此技术主要用于提取汉字的首字母或进行其他基于字符编码的操作。通过以下两个核心方法:`toTureAsciiStr`...

    Java将小写数字变汉字

    将小写数字变大写 如 输入1234567 可以输出一二三四五六七

    Java中文字符编码探究.pdf

    Java中文字符编码探究 Java中文字符编码探究是Java开发者经常遇到的问题之一。在处理中文时,乱码问题是无法避免的。这篇论文通过大量的实验和编码知识支持,探索了Java在不同介质中对汉字的编码,解决了以不同字符...

    java汉子转拼音

    首先,我们需要了解的是Java中的字符编码。在Java中,默认使用Unicode编码,它能够包含世界上大部分字符,包括汉字。Unicode编码下,每个汉字通常由一个或多个码点(code point)表示。汉字转拼音的过程中,我们需要...

    Java 汉子转拼音

    在Java编程环境中,处理中文字符并将其转换为拼音是一项常见的需求,特别是在文本处理、搜索、语音合成等领域。本文将深入探讨Java中实现汉字转拼音的方法,重点介绍Pinyin4j库及其使用技巧。 Pinyin4j是一个专门为...

    字符模板.zip_字符模板_汉子字符模板_车牌 模板_车牌字符样本_车牌识别字符模板

    里面含有各种车牌上的数字、字母、汉字,适用于车牌识别训练

    计算汉字笔画数java实现

    在Java中,可以通过`toCharArray()`方法将字符串转换为字符数组,以便逐个字符地进行处理。例如: ```java char[] chars = cnStr.toCharArray(); ``` 这里`cnStr`代表待处理的字符串。 #### 2. 获取单个字符的笔画...

    JAVa 汉子验证码

    【标题】"JAVa 汉子验证码" 涉及的知识点主要集中在Java编程语言上,特别是关于验证码的生成与验证技术。验证码(CAPTCHA)是一种防止自动化程序(如机器人)非法操作的手段,比如防止恶意注册、刷票等。在本案例中...

    oracle非数字合计,将字段中含有汉子的数据自动转换为 数字0

    在Oracle数据库环境中,有时我们需要处理包含非数字字符的字段,并将其转换为数字进行计算或统计。根据提供的文件信息,本文将详细介绍如何实现“oracle非数字合计”,即将字段中含有汉字或其他非数字字符的数据自动...

    java 汉子转拼音例子

    在Java编程语言中,将汉字转换为拼音是常见的需求,特别是在处理中文数据、搜索功能、文本分析或生成可搜索的关键词时。以下是一些关于Java实现汉字转拼音的知识点: 1. **Java拼音库**: - 在Java中,我们可以...

    Java常用数字工具类 数字转汉字(1)

    Java常用数字工具类 数字转汉字 Java常用数字工具类是指在Java编程语言中,用于实现数字转换为汉字的功能。这种工具类可以将数字转换为汉字,例如将数字21转换为汉字“二十一”。在Java中,实现数字转换为汉字的...

    sql 字符转换数值

    sql 字符转换数值,适合刚入门的朋友,一看即明白,里面有详细的例子。

    将汉字转换成拼音 java 源码

    - **`setToneType()`**: 设置声调类型,可以选择 `WITH_TONE_MARK`(使用数字标记声调)、`WITH_TONE_NUMBER`(在音节后添加数字表示声调)或 `WITHOUT_TONE`(不包含声调)。 - **`setVCharType()`**: 设置“ü”...

    8×8LED点阵显示数字与字符

    ### 8×8 LED点阵显示数字与字符详解 #### 实验目的与效果 本实验旨在帮助学习者掌握8×8 LED点阵显示技术的基本原理及应用方法,并通过实际操作来展示0~9数字、26个英文字母以及一些有趣的图案在8×8 LED点阵上的...

    delphi 实现截取字符串中中文+英文混合截取

    在Delphi编程环境中,处理中文和英文混合的字符串截取是一项常见的任务,特别是在涉及到文本处理、数据解析或者用户界面展示时。由于Unicode编码的存在,中文字符通常占据两个字节,而英文字符则占据一个字节,这就...

    易语言快速取随机字符源码

    3. **字符集选择**:在生成随机字符时,需要定义一个字符集,比如ASCII码表中的字母、数字或特殊符号。根据需求,可以选择不同的字符集,如小写字母`"abcdefghijklmnopqrstuvwxyz"`,大写字母`...

    基于单片机protues仿真的LED点钟汉子、数字显示系统设计(仿真图、源代码)

    基于单片机protues仿真的LED点钟汉子、数字显示系统设计(仿真图、源代码) 该设计为单片机protues仿真的LED点钟汉子、数字显示系统,实现LED点钟汉子、数字显示; 功能实现如下: 1、系统使用51单片机为核心控制; ...

    文字编码转对应的汉子

    它定义了128个不同的字符,包括英文大小写字母、数字、标点符号和一些控制字符,每个字符对应一个7位的二进制数,即128种可能的组合。在十六进制表示中,ASCII字符通常是一个字节,即8位二进制,转换成16进制后是00...

    java转换输出

    在Java编程语言中,将数字转换为大写数字输出是一个常见的需求,特别是在处理财务、会计等领域,需要将数值以规范的格式展示。本篇将详细讲解如何实现这一功能,通过一个简单的Java小示例来说明。 首先,我们需要...

    易语言数字转化为汉字

    "易语言数字转化为汉字"的主题涉及到易语言中的字符串处理和类型转换技术。 易语言是一种面向对象、可视化编程的中文编程环境,它的设计目标是让编程更加简单、直观。在易语言中,实现数字到汉字的转化主要依赖于...

Global site tag (gtag.js) - Google Analytics