《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 用java實現大寫金額轉換及身份證15位轉18位代碼

用java實現大寫金額轉換及身份證15位轉18位代碼

2009-01-06
作者:孫國斌

??? 在用java作項目程序開發過程中,遇到財務制度要求在作社保基金支付時,套打《專用付款款憑證》,金額項除阿拉伯數字外,還要求將人民幣(大寫)打印出來;另有許多參保人員,居民身份證的位數由15位更換成18位,若此類人員進行新參保登記時,不進行校驗檢查,將會造成同一參保人員,以不同的居民身份證號在業務系統中進行重復登記。故需提供將15位身份證轉換成18位,并檢驗此值與核心數據庫是否有相同值,有則提示此人員已參保。另提供對18位身份證的校驗功能(注:按已公布的國標算法)。
模塊描述

??? (1)人民幣在大寫功能轉換,見doubleToChinese模塊,實現的方法為將數值及位數分別取出后,按對應的值將其轉換成字串即可。如100,則大寫金額為“壹百整“;對負金額則加負字,例-100.01,大寫金額為“負壹百零壹分整”。

??? (2)身份證由15位轉18位,可見fixPersonIDCode模塊。附:提交判斷是否為有效的18位身份證號isIdentityId模塊,方法為判斷年份為19開頭的18位身份證號,將其轉化為15位后,按國標進行修補,若經轉換的值同輸入的18位值相同,則說明身份證編號是有效的,否則身份證號可能有誤;考慮到2000年以后出生的人的身份證編號,可能到2016年以后才能申請到,到時此系統能否還在使用很難說,故暫未提供對其身份證號碼的判斷功能。但在此也提供解決的辦法,可以先判斷18位身份證中的年份,對以20開頭的年份,進行轉換時修補程序中改為加20既可。
??? 目前以上功能模塊在社保核心業務系統應用正常。
??? 本例用jbuilder7編譯通過。說明:以下代碼中所加注的說明,說明功能模塊的作用。在具體應用中借鑒或拷貝此代碼到實際程序中即可使用。
package csi.utilitytools;

import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.*;
import java.io.ByteArrayInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;

public class COMUT {

public COMUT() {
? }

? /**
?? * 修補15位居民身份證號碼為18位
?? * @param personIDCode
?? * @return
?? */
? public static String fixPersonIDCode(String personIDCode)
? {
??? String retIDCode = "";
??? if ( personIDCode == null || personIDCode.trim().length() != 15 ) {
????? return personIDCode;
??? }
??? String id17 = personIDCode.substring(0,6) + "19" + personIDCode.substring(6,15);? //15為身份證補'19'

??? char[] code = {'1','0','X','9','8','7','6','5','4','3','2'};? //11個
??? int[] factor={0, 2,4,8, 5,10,9,7, 3,6,1,2, 4,8,5,10, 9,7}; //18個;
??? int[] idcd = new int[18];
??? int???? i;
??? int???? j;
??? int???? sum;
??? int???? remainder;

??? for (i=1; i<18; i++)
??? {
????? j = 17 - i ;
????? idcd[i] = Integer.parseInt(id17.substring(j, j+1));
??? }

??? sum = 0;
??? for (i=1; i<18; i++)
??? {
????? sum = sum? + idcd[i] * factor[i];
??? }
??? remainder = sum%11;
??? String lastCheckBit = String.valueOf(code[ remainder ]);
??? return id17 + lastCheckBit;
??? }

??? /**
???? *人民幣大寫金額轉換
???? * @param number
???? * @param pattern
???? * @return
???? * @throws GeneralException
???? */
??? public static String format(double number,String pattern)
??? {
????? DecimalFormat df = new DecimalFormat(pattern);
????? return df.format(number);
??? }
??? public static String format(String number,String pattern)
??? {
????? double d = new Double(number).doubleValue();
????? return format(d,pattern);
??? }
??? public static String doubleToChinese(double sumofcash)
??? {
????? String[] arr = {"分","角","元","拾","百","千","萬","拾萬","百萬",
??????????????????????????????? "千萬","億","拾億","百億","千億"};
????? String sTmp = "";
????? String sMoney = "";
????? String header = "";
????? if(sumofcash<0)
??????? header = "負";
????? sumofcash = Math.abs(sumofcash);
????? double dTmp =sumofcash*100;
????? sMoney = format(dTmp,"0,000.#");
????? StringTokenizer st = new StringTokenizer(sMoney,",");
????? String tmp = "";
????? while (st.hasMoreElements()){
??????? tmp = tmp + st.nextToken();
????? }
????? sMoney = tmp;
????? int iLen = sMoney.length();
????? int count = 0;
????? for (int i=0;i????? {
??????? String sTemp = sMoney.substring(i,i+1);
??????? if (sTemp.equals("0"))
??????? {
????????? count++;
????????? if (count==1)
????????? {
??????????? sTmp = sTmp + trans(sTemp);
????????? }
??????? }else
??????? {
????????? sTmp = sTmp + trans(sTemp);
????????? sTmp = sTmp + arr[iLen-i-1];
????????? count = 0;
??????? }

????? }
????? sTmp = sTmp.trim();
????? iLen = sTmp.length();
????? if (sTmp.substring(iLen-1,iLen).equals("零"))
????? {
??????? sTmp = sTmp.substring(0,iLen-1);
????? }
????? sTmp = sTmp + "整";
????? sTmp = header.concat(sTmp);
????? return sTmp;
??? }
??? private static String trans(String args)
??? {
????? int iTemp = Integer.parseInt(args);
????? String sRes = "";
????? switch (iTemp)
????? {
??????? case 1:sRes = "壹";
????????? break;
??????? case 2:sRes = "貳";
????????? break;
??????? case 3:sRes = "叁";
????????? break;
??????? case 4:sRes = "肆";
????????? break;
??????? case 5:sRes = "伍";
????????? break;
??????? case 6:sRes = "陸";
????????? break;
??????? case 7:sRes = "柒";
????????? break;
??????? case 8:sRes = "捌";
????????? break;
??????? case 9:sRes = "玖";
????????? break;
??????? case 0:sRes = "零";
????? }
????? return sRes;
??? }


/**
?* 判斷是否是有效的18位或15位居民身份證號碼
?* @param identityId:18位或15位居民身份證號碼
?* @return:true: 有效的18位或15位居民身份證號碼
?*/
??? public static boolean isIdentityId(String identityId) {
????? if(isEmpty(identityId)) return false;
????? try{
??????? if(identityId.length()==18){
????????? String identityId15 = identityId.substring(0,6)+identityId.substring(8,17);
????????? //System.out.println("the identityId15 is : "+identityId15);
????????? if(fixPersonIDCode(identityId15).equalsIgnoreCase(identityId)) {
??????????? return true;
????????? }else {
????????? return false;
????????? }
??????? }else if(identityId.length()==15){
????????? try{
??????????? Long.parseLong(identityId);
??????????? return true;
????????? }catch(Exception ex){
??????????? return false;
????????? }
??????? }else{
????????? return false;
??????? }
????? }catch(Exception ex){
??????????? return false;
????? }

? }

? /**
?? * 判斷是否為空串""
?? */
? public static boolean isEmpty(String sValue) {
??? if(sValue==null) return true;
??? return sValue.trim().equals("") ? true : false ;
?}

? public static void main(String[] args) {

??? try{
????? System.out.println(doubleToChinese(12003000.01)); //打印金額大寫
System.out.println(fixPersonIDCode("650103760113073"));//身份證15位轉18位
System.out.println(isIdentityId ("650103760113073")); //否是為有效的15位身份證號

??? } catch (Exception e) {
????? e.printStackTrace();
??? }
? }
}

程序調試結果如下:
D:\JBuilder7\jdk1.3.1\bin\javaw -classpath "D:\ejbwork\xjsb\classes;D:\bea\wlserver6.0\lib\weblogic.jar;C:\bea\wlserver6.1\lib\weblogic_sp.jar;C:\bea\wlserver6.1\lib\weblogic.jar;D:\JBuilder7\jdk1.3.1\demo\jfc\Java2D\Java2Demo.jar;D:\JBuilder7\jdk1.3.1\jre\lib\i18n.jar;D:\JBuilder7\jdk1.3.1\jre\lib\jaws.jar;D:\JBuilder7\jdk1.3.1\jre\lib\rt.jar;D:\JBuilder7\jdk1.3.1\jre\lib\sunrsasign.jar;D:\JBuilder7\jdk1.3.1\lib\dt.jar;D:\JBuilder7\jdk1.3.1\lib\htmlconverter.jar;D:\JBuilder7\jdk1.3.1\lib\tools.jar"? -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=zw2k:1992,suspend=y
?csi.utilitytools. COMUT
壹千萬貳百萬零叁千零壹分整650103197601130732
true

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美美女喷水视频| 国产精品自拍在线| 午夜日韩在线| 亚洲视频综合在线| 99在线观看免费视频精品观看| 久久国产精品99久久久久久老狼| 亚洲欧美日韩国产一区| 亚洲一区二区三区在线播放| 一区二区动漫| 中文在线资源观看视频网站免费不卡| 亚洲久久视频| 一本色道久久综合亚洲精品按摩| 亚洲精品综合久久中文字幕| 亚洲美洲欧洲综合国产一区| 亚洲日本乱码在线观看| 亚洲人成77777在线观看网| 亚洲精品三级| 艳女tv在线观看国产一区| 亚洲精品自在久久| 宅男噜噜噜66一区二区66| 亚洲视频在线视频| 午夜精品久久久久| 欧美一级网站| 亚洲动漫精品| 亚洲巨乳在线| 亚洲一区影院| 欧美一区在线看| 久久色在线观看| 免费国产自线拍一欧美视频| 欧美暴力喷水在线| 欧美精品久久99| 国产精品夫妻自拍| 国产女主播一区二区三区| 国产一区二区高清| 亚洲成人在线免费| 一区二区黄色| 欧美亚洲一区三区| 91久久精品日日躁夜夜躁国产| 亚洲精品一区在线观看香蕉| 亚洲一区二区精品在线观看| 性刺激综合网| 久久青青草原一区二区| 欧美成人免费在线观看| 欧美日韩精品一区二区天天拍小说| 欧美视频一区二区三区在线观看| 国产精品综合久久久| 国产无遮挡一区二区三区毛片日本| 狠狠色丁香久久婷婷综合_中| 亚洲国产色一区| 亚洲婷婷国产精品电影人久久| 欧美亚洲综合网| 亚洲精品欧美精品| 亚洲免费在线观看视频| 久久中文字幕一区| 欧美日韩精品一区二区三区| 国产精品伊人日日| 亚洲国产日韩欧美在线99| 亚洲一二三四久久| 久久精品天堂| 亚洲影院在线| 男女激情久久| 国产精品无码专区在线观看| 亚洲第一综合天堂另类专| 一区二区三区 在线观看视频| 久久国产精品电影| 亚洲一区日韩| 欧美激情久久久久| 国产欧美亚洲日本| 亚洲黄色三级| 欧美一区日本一区韩国一区| 日韩视频一区二区三区在线播放免费观看 | 国产精品一区=区| 亚洲高清一区二| 亚洲免费视频一区二区| 亚洲精品在线视频观看| 性18欧美另类| 欧美日韩免费一区二区三区视频| 国产一区二区成人| 国产精品99久久久久久www| 亚洲国产精品久久久久婷婷老年| 亚洲一区在线免费观看| 男人的天堂亚洲在线| 国产区精品视频| 亚洲少妇自拍| 一区二区免费看| 毛片精品免费在线观看| 国产伦精品一区二区三区在线观看 | 久久狠狠婷婷| 欧美一区二区黄色| 欧美体内she精视频在线观看| 在线播放日韩欧美| 欧美一区二区三区久久精品| 亚洲在线观看免费| 欧美日韩精品免费观看| 亚洲第一偷拍| 亚洲国产婷婷综合在线精品| 久久精品一本久久99精品| 国产精品丝袜久久久久久app| 亚洲毛片av| 亚洲免费观看视频| 欧美成人一品| 在线观看欧美亚洲| 久久精品99国产精品日本| 欧美影院视频| 国产精品日韩精品欧美在线| 日韩午夜精品| 99亚洲一区二区| 欧美精品999| 亚洲国产精品电影在线观看| 亚洲国产精品免费| 乱中年女人伦av一区二区| 韩国av一区二区三区四区| 亚洲欧美网站| 欧美在线一级视频| 国产欧美精品va在线观看| 亚洲一区二区在线看| 亚洲欧美日韩精品一区二区| 国产精品久久久久久久app| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲精品久久久久久久久久久久久| 久久久久久久久久久一区| 国产网站欧美日韩免费精品在线观看| 亚洲欧洲av一区二区三区久久| 午夜精品影院| 国产精品视频一区二区三区| 亚洲女ⅴideoshd黑人| 欧美在线亚洲一区| 国产主播在线一区| 亚洲国产精品成人综合色在线婷婷| 久久夜色精品国产| 在线免费观看成人网| 亚洲精品自在久久| 欧美日韩国产电影| 在线综合+亚洲+欧美中文字幕| 亚洲欧美卡通另类91av| 国产精品一二三视频| 午夜精品国产更新| 久久亚洲二区| 亚洲国产综合在线| 正在播放日韩| 国产精品一区在线观看你懂的| 午夜精品久久久久久久久久久久久| 欧美尤物一区| 曰韩精品一区二区| 亚洲视频1区| 国产日韩欧美在线| 亚洲国产精品视频一区| 欧美日韩国内| 亚洲亚洲精品三区日韩精品在线视频| 久久国产福利| 在线成人国产| 亚洲一区二区三区国产| 国产亚洲精品美女| 亚洲美女黄网| 欧美性一区二区| 欧美在线观看视频一区二区| 免费久久99精品国产自在现线| 亚洲日本va午夜在线影院| 新狼窝色av性久久久久久| 精品999成人| 亚洲性视频h| 国产永久精品大片wwwapp| 亚洲精选中文字幕| 国产精品一区毛片| 亚洲肉体裸体xxxx137| 欧美午夜宅男影院在线观看| 亚洲欧美在线一区二区| 欧美 日韩 国产一区二区在线视频| 日韩视频不卡中文| 欧美在线观看网址综合| 亚洲电影成人| 亚洲欧美日韩综合| 在线播放豆国产99亚洲| 亚洲欧美中文日韩v在线观看| 激情综合久久| 亚洲一级电影| 在线观看av不卡| 午夜欧美大片免费观看| 亚洲高清在线观看| 久久国产毛片| 99re在线精品| 久久综合狠狠综合久久综合88| 中国女人久久久| 欧美不卡视频一区| 午夜精品福利电影| 欧美体内谢she精2性欧美| 亚洲国产第一页| 国产精品亚洲综合色区韩国| 一本高清dvd不卡在线观看| 国产最新精品精品你懂的| 亚洲一区高清| 亚洲国产精品激情在线观看| 久久不射中文字幕| 正在播放欧美视频| 欧美—级在线免费片| 欧美在线综合| 国产精品乱人伦中文| 亚洲精品国产拍免费91在线| 国产主播精品在线| 亚欧成人精品|