`

把字符串的中文数字转化为阿拉伯数字

阅读更多
	private static Pattern numPattern = Pattern.compile("\\d+");

         /**
	 * 把“火影第二部第三百二十回”转化为“火影第2部第320回”
	 * 
	 * @param s
	 * @return 对应字符串的阿拉伯数字形式
	 * @author chow 2010-8-19 上午11:04:35
	 */
	private static String cnNumToInt(String s) {
		StringBuffer result = new StringBuffer();
		int sum = 0;
		boolean cnInterupt = false; // 转化过程被中文间断

		int yi = 1;// 记录高级单位
		int wan = 1;// 记录高级单位
		int ge = 1;// 记录单位

		for (int i = s.length() - 1; i >= 0; i--) {
			char c = s.charAt(i);
			int temp = 0;// 记录数值
			switch (c) {
			// 数值
			case '〇':
			case '零':
				temp = 0;
				break;
			case '一':
				temp = 1 * ge * wan * yi;
				ge = 1;
				break;
			case '二':
				temp = 2 * ge * wan * yi;
				ge = 1;
				break;
			case '三':
				temp = 3 * ge * wan * yi;
				ge = 1;
				break;
			case '四':
				temp = 4 * ge * wan * yi;
				ge = 1;
				break;
			case '五':
				temp = 5 * ge * wan * yi;
				ge = 1;
				break;
			case '六':
				temp = 6 * ge * wan * yi;
				ge = 1;
				break;
			case '七':
				temp = 7 * ge * wan * yi;
				ge = 1;
				break;
			case '八':
				temp = 8 * ge * wan * yi;
				ge = 1;
				break;
			case '九':
				temp = 9 * ge * wan * yi;
				ge = 1;
				break;
			// 单位,前缀是单数字
			case '十':
				ge = 10;
				break;
			case '百':
				ge = 100;
				break;
			case '千':
				ge = 1000;
				break;
			// 高级单位,前缀可以是多个数字
			case '万':
				wan = 10000;
				ge = 1;
				break;
			case '亿':
				yi = 100000000;
				wan = 1;
				ge = 1;
				break;
			default:
				cnInterupt = true;
			}
			// 先把当前累加的sum拼到原字符串,再把非中文数字 字符拼回原字符串
			if (cnInterupt) {
				if (sum != 0) {
					result.insert(0, sum);
				}
				result.insert(0, c);
				cnInterupt = false;
				sum = temp = 0;
				ge = wan = yi = 1;
			}
			if (ge == 10 && (i==0||numPattern.matcher(s.substring(i-1,i)).find())) { // 对第十集,第十二,十五的特殊处理
				temp = 10;
			}
			sum += temp;
		}
		if (sum != 0) {
			result.insert(0, sum);
		}
		return result.toString();
	}

 

PS:程序是改写网上的,网上的程序是只能转化全部都为中文数字的字符串,本程序可处理含有其他中文的字符串

分享到:
评论

相关推荐

    中文数字转成阿拉伯数字 java 实现

    在Java编程语言中,将中文数字转换为阿拉伯数字是一个常见的需求,特别是在处理中文文本数据时。这个场景下,我们有一个名为“中文数字转成阿拉伯数字 java 实现”的压缩包,包含了一个实现此功能的Java包和一个单元...

    中文数字转换为阿拉伯数字

    将一段字符串中的中文数字转换为阿拉伯数字,也可将阿拉伯数字转换为中文数字

    中文数字转化成阿拉伯数字

    在编程领域,中文数字转化成阿拉伯数字是一项常见的需求,特别是在处理中文文本数据时。C#是一种广泛使用的面向对象的编程语言,它提供了丰富的库和工具来处理字符串和文本转换。本篇文章将深入探讨如何在C#中实现...

    汉语数字串与阿拉伯数字串间转换小工具(C源码)

    本项目是关于"汉语数字串与阿拉伯数字串间转换小工具",它使用C语言编写,专注于字符串操作,能够实现两种数字表示形式的互换,并且支持汉语数字串的大小写转换。这个工具对于处理中文数字和阿拉伯数字之间的转换...

    汉字金额转换为阿拉伯数字

    在IT行业中,尤其是在财务软件开发或者数据处理领域,汉字金额转换为阿拉伯数字是一个常见的需求。这是因为汉字金额在日常生活中广泛使用,特别是在中国,而在计算机处理和计算时,阿拉伯数字更为方便。Visual ...

    阿拉伯数字转换为中文小写数字

    接下来,我们可以编写一个函数,接受阿拉伯数字的字符串作为输入,然后遍历字符串,逐个转换每个字符: ```java public String arabicToChinese(String arabicNum) { StringBuilder chineseNum = new ...

    中文数字转换阿拉伯数字

    在IT领域,中文数字转换阿拉伯数字是一个常见的编程需求,尤其在中国的文化背景下,有时需要将中文表述的数字转化为阿拉伯数字用于计算或数据处理。这个任务涉及到自然语言处理(NLP)和字符串处理技术,通常通过...

    阿拉伯数字转换为中文大写

    在mons方法中,我们首先将阿拉伯数字字符串转换为字符数组,然后将其反转,接着遍历字符数组,使用Integer.parseInt方法将每个字符转换为整数,然后使用name数组和unit数组将其转换为中文大写数字,并加上相应的单位...

    delphi阿拉伯数字转换成中文写法

    把阿拉伯数字转为汉字写法比如123456789转化为零壹贰叁肆伍陆柒捌玖,以及几百几千几万的数字都可以转化

    C语言二进制字符串与十六进制字符串相互转化

    要将二进制字符串转化为十六进制字符串,我们需要逐位处理二进制数。每四位二进制数对应一位十六进制数。例如,二进制字符串 "1101 0110" 可以转换为十六进制的 "D6"。在C语言中,可以使用`sscanf`和`sprintf`函数...

    阿拉伯数字转中文数字(vb)

    3. 使用条件语句或查找表,将每一位阿拉伯数字转换为对应的中文数字,并添加到`result`字符串中。 4. 处理中文的“十”、“百”、“千”等单位。在合适的位数(比如每四位)加入相应的中文单位,但需要注意去除不必...

    c和lua的中文和阿拉伯数字互转

    总之,理解和实现C语言与Lua之间的中文数字与阿拉伯数字的互转是一项涉及字符串处理、数值转换和语言特性的任务。这不仅要求编程技能,还需要对两种语言的理解和对中文数字的熟悉。在实际应用中,这样的功能可以广泛...

    将阿拉伯数字转换为汉字数字

    总之,阿拉伯数字到汉字数字的转换是中文编程中常见的需求,`arabChange.dll`提供了这样的功能,使得C#开发者可以方便地将阿拉伯数字转化为符合中文阅读习惯的汉字数字。通过理解和正确使用这个库,可以提高代码的...

    中文数字转换阿拉伯数字.rar

    在IT领域,中文数字转换为阿拉伯数字是一项常见的需求,特别是在数据处理、文本分析以及自然语言处理(NLP)等场景中。中文数字以其独特的字符形式,如“一”、“二”、“三”到“十”、“百”、“千”等,与阿拉伯...

    BAT批处理脚本-格式转换-阿拉伯数字转为罗马数字.cmd.zip

    在批处理脚本中,可能的方法是首先通过“set /p”获取用户输入的阿拉伯数字,然后通过一系列条件判断和计算,将阿拉伯数字转换为对应的罗马数字字符串。这个过程中可能需要用到循环结构,因为罗马数字的表示往往涉及...

    JavaScript实现把数字转换成中文

    以下是一个简单的 JavaScript 函数,用于将阿拉伯数字转换为中文数字。 首先,我们定义了一个名为 `_change` 的对象,这个对象包含了三个数组: 1. `ary0` 数组存储了0到9的中文数字。 2. `ary1` 数组存储了10、...

    BAT批处理脚本-格式转换-中文数字转换为阿拉伯数字.cmd.zip

    这个批处理脚本,"中文数字转换为阿拉伯数字.cmd.txt",可能是用CMD命令编写的一个程序,用于自动转换输入的中文数字字符串为对应的阿拉伯数字。在批处理脚本中,可能会使用到字符串处理命令,如`FOR`循环来遍历每个...

    C++ 16进制和字符串批量转换

    本教程将详细阐述如何在C++中实现混合字符串(包括汉字和数字等字符)的批量16进制转换以及16进制到字符串的转换。 首先,我们需要理解基本的16进制表示法。16进制(Hexadecimal)是一种基数为16的数制,使用0-9的...

    matlab开发-罗马数字阿拉伯数字转换

    在MATLAB编程环境中,开发罗马数字与阿拉伯数字之间的转换功能是一项常见的练习,它涉及字符串处理和数值计算。本文将深入探讨这一主题,并基于提供的文件名`num2rom.fig`、`num2rom.m`和`license.txt`进行解析。 ...

Global site tag (gtag.js) - Google Analytics