导航:首页 > 编程语言 > java中文数字

java中文数字

发布时间:2022-12-21 04:39:15

‘壹’ java 怎么判断是否是汉字的数字

用java语言的正则表达式就可以判断一个字符串是否都是汉字的数字

具体的Java程序如下

importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassCCF{
publicstaticvoidmain(String[]args){
Strings="二八三八八六四三";
Stringregex="^[一二三四五六七八九十]+$";
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(s);
if(m.matches()){
System.out.println(s+"是汉字的数字");
}else{
System.out.println(s+"不是汉字的数字");
}
}
}

运行结果

二八三八八六四三是汉字的数字

‘贰’ java如何将数字转为中文大写

import org.apache.commons.lang3.StringUtils;

/**
* @Title: ConvertUpMoney
* @Description: 将数字金额转换为大写中文金额
* @date: 2019年6月18日 下午10:52:27
*/
public class ConvertUpMoney {

// 大写数字
private static final String[] NUMBERS = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// 整数部分的单位
private static final String[] IUNIT = {"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"};
// 小数部分的单位
private static final String[] DUNIT = {"角","分","厘"};

/**
* 转换为大写的中文金额
* @param str 字符串类型的 金额数字
* @return
*/
public static String toChinese(String str) {
// 判断输入的金额字符串是否符合要求
if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {
return "抱歉,请输入数字!";
}

if("0".equals(str) || "0.00".equals(str) || "0.0".equals(str)) {
return "零元";
}

// 判断金额数字中是否存在负号"-"
boolean flag = false;
if(str.startsWith("-")){
// 标志位,标志此金额数字为负数
flag = true;
str = str.replaceAll("-", "");
}

// 去掉金额数字中的逗号","
str = str.replaceAll(",", "");
String integerStr;//整数部分数字
String decimalStr;//小数部分数字

// 初始化:分离整数部分和小数部分
if(str.indexOf(".")>0) {
integerStr = str.substring(0,str.indexOf("."));
decimalStr = str.substring(str.indexOf(".") + 1);
}else if(str.indexOf(".")==0) {
integerStr = "";
decimalStr = str.substring(1);
}else {
integerStr = str;
decimalStr = "";
}

// beyond超出计算能力,直接返回
if(integerStr.length()>IUNIT.length) {
return "超出计算能力!";
}

// 整数部分数字
int[] integers = toIntArray(integerStr);
// 判断整数部分是否存在输入012的情况
if (integers.length>1 && integers[0] == 0) {
return "抱歉,输入数字不符合要求!";
}
// 设置万单位
boolean isWan = isWan5(integerStr);
// 小数部分数字
int[] decimals = toIntArray(decimalStr);
// 返回最终的大写金额
String result = getChineseInteger(integers, isWan) + getChineseDecimal(decimals);
if(flag){
// 如果是负数,加上"负"
return "负" + result;
}else{
return result;
}
}

/**
* 将字符串转为int数组
* @param number 数字
* @return
*/
private static int[] toIntArray(String number) {
int[] array = new int[number.length()];
for(int i = 0;i<number.length();i++) {
array[i] = Integer.parseInt(number.substring(i,i+1));
}
return array;
}

/**
* 将整数部分转为大写的金额
* @param integers 整数部分数字
* @param isWan 整数部分是否已经是达到【万】
* @return
*/
public static String getChineseInteger(int[] integers,boolean isWan) {
StringBuffer chineseInteger = new StringBuffer("");
int length = integers.length;
if (length == 1 && integers[0] == 0) {
return "";
}
for(int i=0; i<length; i++) {
String key = "";
if(integers[i] == 0) {
if((length - i) == 13)//万(亿)
key = IUNIT[4];
else if((length - i) == 9) {//亿
key = IUNIT[8];
}else if((length - i) == 5 && isWan) {//万
key = IUNIT[4];
}else if((length - i) == 1) {//元
key = IUNIT[0];
}
if((length - i)>1 && integers[i+1]!=0) {
key += NUMBERS[0];
}
}
chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length - i -1]));
}
return chineseInteger.toString();
}

/**
* 将小数部分转为大写的金额
* @param decimals 小数部分的数字
* @return
*/
private static String getChineseDecimal(int[] decimals) {
StringBuffer chineseDecimal = new StringBuffer("");
for(int i = 0;i<decimals.length;i++) {
if(i == 3) {
break;
}
chineseDecimal.append(decimals[i]==0?"":(NUMBERS[decimals[i]]+DUNIT[i]));
}
return chineseDecimal.toString();
}

/**
* 判断当前整数部分是否已经是达到【万】
* @param integerStr 整数部分数字
* @return
*/
private static boolean isWan5(String integerStr) {
int length = integerStr.length();
if(length > 4) {
String subInteger = "";
if(length > 8) {
subInteger = integerStr.substring(length- 8,length -4);
}else {
subInteger = integerStr.substring(0,length - 4);
}
return Integer.parseInt(subInteger) > 0;
}else {
return false;
}
}

// Test
public static void main(String[] args) {
String number = "12.56";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "1234567890563886.123";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "1600";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "156,0";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "-156,0";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0.12";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0.0";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "01.12";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "0125";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "-0125";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

number = "sdw5655";
System.out.println(number+": "+ConvertUpMoney.toChinese(number));

System.out.println(null+": "+ConvertUpMoney.toChinese(null));
}
}

‘叁’ 用java把阿拉伯数字转换成中文数字,怎么做

设两个数组,第一个数组放数字,第二个放中文,
传入一个数字,到数字数组中取出下标,拿着这个下标去中文数组中去出对应的值,就是
中文字,这不就转换了。
HashMap,也可以。key=0,value=零,
map.get(key,value)

‘肆’ Java中中文转码,为什么中文数字转不过来

中文数字“1”其实跟一般的中文字是一样的。所以当文件的编码格式转换之后,还是没法转过来的。
如果你只是想改变文件的编码格式,并且想让文件里面的内容不会出现乱码的话,有个办法。
1、先把文件的内容复制一份出来,到记事本里面;
2、修改文件的编码格式;
3、把到记事本的内容再回改了编码格式之后的文件中;
4、保存文件。

‘伍’ java 正则表达式 怎么匹配 中文 和数字

java 正则匹配字符为纯数字方法:
定义正则表达式为:

String reg="^\\d+$"

获取要判断的字符串:

String str;//可以通过Scanner从控制台输入,也可以用字符串常量进行初始化

调用字符串的matches方法判断字符串为纯数字情况:

str.matches(reg);

如果是纯数字返回为true,否则返回为false;

‘陆’ 使用Java程序如何让阿拉伯数字转换成中文

import java.util.Scanner;

public class Num
{
public Num() {}

static String []bigNum={"零","一","二","三","四","五","六","七","八","九"};

static String getNUM(String str)
{

int t=Integer.parseInt(str);
return bigNum[t];
}

public static void main(String[] args)
{
try
{
String strbig=new String("");
System.out.print("请输入数字:");
Scanner sc=new Scanner(System.in);
long num=sc.nextLong();
String temp=String.valueOf(num);
int b=temp.indexOf(".");
int s=temp.length()-(b+1);

int j=b;
for (int i =0; i<b;i++) {
strbig+=getNUM(temp.substring(i,i+1));

j--;
}
temp=temp.substring(b+1,temp.length());
for (int i = 0; i < s; i++)
{

strbig+=getNUM(temp.substring(i,i+1));
}
System.out.println("转换结果:"+strbig);
}
catch(Exception ex)
{
System.out.println("请输入整数");
}

}
}

‘柒’ 我想用java正则匹配汉语数字,比如:零、一、二、二十二、三百三十三,等等,有人知道么

下面是一个代码你可以看一下,答案就在其中
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
String re0 = "[零一二三四五六七八九十百千]";
String re1 = "\\d+-\\d+-?\\d*-?\\d*|"+re0+"+-"+re0+"+-?"+re0+"*-?"+re0+"*";//存在 3-3(3-3-3、3-3-3-3)
String re2 = "\\d+号|"+re0+"+号";//存在3/三号
String re3 = "\\d+-\\d+-?\\d*-?\\d*号|"+re0+"+-"+re0+"+-?"+re0+"*-?"+re0+"*号";//存在3-33-3(3-3-3、3-3-3-3)号
String re4 = "\\d+号?[栋弄幢楼座]|"+re0+"+号?[栋弄幢楼座]";
String re10 = "[省市乡县村屯区巷街路道]$";//以村等结尾
String str1 = "香港吉祥二十号";
System.out.println(re1);
Pattern pattern = Pattern.compile(re2);
Matcher matcher = pattern.matcher(str1);
boolean rs = matcher.find();
System.out.println(rs);

}
}

‘捌’ java怎么实现中文数字排序

先将中文数字转换成数字,然后排序。输出的时候将数字和中文数字之间的对应关系还原就好了。

‘玖’ java 用大写中文数字计算加减法

public class MapTest {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("壹", 1);
map.put("贰", 2);
map.put("叁", 3);
map.put("肆", 4);
map.put("伍", 5);
map.put("陆", 6);
map.put("柒", 7);
map.put("捌", 8);
map.put("玖", 9);
String str = "肆+伍";// 我们就假设是这个样式的
int a = map.get(str.substring(0, 1));
char b = str.charAt(1);
int c = map.get(str.substring(2, 3));
switch (b) {
case '+':
System.out.println(a + c);
break;
case '-':
System.out.println(a - c);
break;
case '*':
System.out.println(a * c);
break;
case '/':
System.out.println(a / c);
break;
default:
System.out.println("未定义的符号");
}
}
}

这是一个小小的例子,给你一条路走,具体的逻辑需要你自己去修正

‘拾’ 如何在java中将汉字输出成数字

java 中将数字变成字符输出常用的有两种方法:

第一种,直接使用系统强制类型转换进行输出.
例:

1
2

int i = 1;
System.out.println(i + "");

第二种,使用字符串 String 的 valueOf() 方法进行转换输出.

例:

1
2

int i = 1;
System.out.println(String.valueOf(i));

阅读全文

与java中文数字相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:485
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163