『壹』 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));