You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

270 lines
8.0 KiB
Java

import java.util.HashMap;
import java.util.Map;
public class PLUploader {
public static boolean isNumeric(String s) {
return s.matches("-?\\d+(\\.\\d+)?");
}
public static String runCarNo2Code(String strCarNo) {
strCarNo = strCarNo.trim();
strCarNo = strCarNo.replaceAll(" ", "");
if (strCarNo.contains("0000"))
return "0000000000";
// System.out.println("====" + strCarNo + "===");
// System.out.println("==== " + nCarNoLength);
int nCarNoLength = strCarNo.length();
if (nCarNoLength < 7 || nCarNoLength > 9)
return "0000000000";
if (nCarNoLength == 9 && PLUploader.isNumeric(strCarNo.substring(2, 4)) == false) {
return "0000000000";
}
if (PLUploader.isNumeric(strCarNo.substring(strCarNo.length()-4, strCarNo.length())) == false) {
return "0000000000";
}
short b1, b2, b3, b4, b5;
// 1. 외교 관련
if (strCarNo.indexOf("외교") >= 0 || strCarNo.indexOf("영사") >= 0 || strCarNo.indexOf("국기") >= 0) {
String strCarNoF = strCarNo.replaceAll("-", "");
b1 = getRegion("외교");
b2 = Short.parseShort(strCarNoF.substring(2, 4), 16);
b3 = getCarClass("외");
b4 = Short.parseShort(strCarNoF.substring(4, 6), 16);
b5 = Short.parseShort(strCarNoF.substring(6, 8), 16);
}
// 2. 비사업자용
else if (nCarNoLength == 7) { // 35도2345
b1 = getRegion("전국");
String temp = strCarNo.substring(0, 2);
if (PLUploader.isNumeric(temp) == false) {
return "0000000000";
}
b2 = Short.parseShort(strCarNo.substring(0, 2), 16);
b3 = getCarClass(strCarNo.substring(2, 3));
b4 = Short.parseShort(strCarNo.substring(3, 5), 16);
b5 = Short.parseShort(strCarNo.substring(5, 7), 16);
if (b1 == 256)
return "0000000000";
if (b3 < 0)
return "0000000000";
} else if (nCarNoLength == 8) { // 135도2345
// 예외처리
String temp = strCarNo.substring(0, 3);
if (PLUploader.isNumeric(temp) == true) {
b1 = getRegion(strCarNo.substring(0, 1));
b2 = Short.parseShort(strCarNo.substring(1, 3), 16);
b3 = getCarClass(strCarNo.substring(3, 4));
b4 = Short.parseShort(strCarNo.substring(4, 6), 16);
b5 = Short.parseShort(strCarNo.substring(6, 8), 16);
if (b1 == 256)
return "0000000000";
if (b3 < 0)
return "0000000000";
} else {
temp = strCarNo.substring(0, 2);
if (PLUploader.isNumeric(temp) ==true) {
return "0000000000";
}
b1 = getRegion(strCarNo.substring(0, 2));
if (PLUploader.isNumeric(strCarNo.substring(2, 3)) ==false) {
return "0000000000";
}
b2 = Short.parseShort(strCarNo.substring(2, 3), 16);
b3 = getCarClass(strCarNo.substring(3, 4));
b4 = Short.parseShort(strCarNo.substring(4, 6), 16);
b5 = Short.parseShort(strCarNo.substring(6, 8), 16);
if (b1 == 256)
return "0000000000";
if (b3 < 0)
return "0000000000";
}
}
// 3. 사업자용
else {
b1 = getRegion(strCarNo.substring(0, 2));
b2 = Short.parseShort(strCarNo.substring(2, 4), 16);
b3 = getCarClass(strCarNo.substring(4, 5));
b4 = Short.parseShort(strCarNo.substring(5, 7), 16);
b5 = Short.parseShort(strCarNo.substring(7, 9), 16);
if (b1 == 256)
return "0000000000";
if (b3 < 0)
return "0000000000";
}
return String.format("%02X%02X%02X%02X%02X", b1, b2, b3, b4, b5);
}
private static short getRegion(String str) {
Map<String, Object> mapRegion = new HashMap<>();
mapRegion.put("서울", "00");
mapRegion.put("부산", "01");
mapRegion.put("인천", "02");
mapRegion.put("대구", "03");
mapRegion.put("광주", "04");
mapRegion.put("대전", "05");
mapRegion.put("경기", "06");
mapRegion.put("강원", "07");
mapRegion.put("충북", "08");
mapRegion.put("충남", "09");
mapRegion.put("전북", "10");
mapRegion.put("전남", "11");
mapRegion.put("경북", "12");
mapRegion.put("경남", "13");
mapRegion.put("제주", "14");
mapRegion.put("울산", "15");
mapRegion.put("세종", "16");
mapRegion.put("1", "81");
mapRegion.put("2", "82");
mapRegion.put("3", "83");
mapRegion.put("4", "84");
mapRegion.put("5", "85");
mapRegion.put("6", "86");
mapRegion.put("7", "87");
mapRegion.put("8", "88");
mapRegion.put("9", "89");
mapRegion.put("외교", "98");
mapRegion.put("전국", "99");
if (mapRegion.get(str) == null)
return Short.parseShort("100", 16);
return Short.parseShort((String) mapRegion.get(str), 16);
}
private static short getCarClass(String str) {
Map<String, Object> mapCarClass = new HashMap<>();
mapCarClass.put("가", "00");
mapCarClass.put("나", "01");
mapCarClass.put("다", "02");
mapCarClass.put("라", "03");
mapCarClass.put("마", "04");
mapCarClass.put("바", "05");
mapCarClass.put("사", "06");
mapCarClass.put("아", "07");
mapCarClass.put("자", "08");
mapCarClass.put("차", "09");
mapCarClass.put("카", "10");
mapCarClass.put("타", "11");
mapCarClass.put("파", "12");
mapCarClass.put("하", "13");
mapCarClass.put("거", "14");
mapCarClass.put("너", "15");
mapCarClass.put("더", "16");
mapCarClass.put("러", "17");
mapCarClass.put("머", "18");
mapCarClass.put("버", "19");
mapCarClass.put("서", "20");
mapCarClass.put("어", "21");
mapCarClass.put("저", "22");
mapCarClass.put("처", "23");
mapCarClass.put("커", "24");
mapCarClass.put("터", "25");
mapCarClass.put("퍼", "26");
mapCarClass.put("허", "27");
mapCarClass.put("고", "28");
mapCarClass.put("노", "29");
mapCarClass.put("도", "30");
mapCarClass.put("로", "31");
mapCarClass.put("모", "32");
mapCarClass.put("보", "33");
mapCarClass.put("소", "34");
mapCarClass.put("오", "35");
mapCarClass.put("조", "36");
mapCarClass.put("초", "37");
mapCarClass.put("코", "38");
mapCarClass.put("토", "39");
mapCarClass.put("포", "40");
mapCarClass.put("호", "41");
mapCarClass.put("구", "42");
mapCarClass.put("누", "43");
mapCarClass.put("두", "44");
mapCarClass.put("루", "45");
mapCarClass.put("무", "46");
mapCarClass.put("부", "47");
mapCarClass.put("수", "48");
mapCarClass.put("우", "49");
mapCarClass.put("주", "50");
mapCarClass.put("추", "51");
mapCarClass.put("쿠", "52");
mapCarClass.put("투", "53");
mapCarClass.put("푸", "54");
mapCarClass.put("후", "55");
mapCarClass.put("그", "56");
mapCarClass.put("느", "57");
mapCarClass.put("드", "58");
mapCarClass.put("르", "59");
mapCarClass.put("므", "60");
mapCarClass.put("브", "61");
mapCarClass.put("스", "62");
mapCarClass.put("으", "63");
mapCarClass.put("즈", "64");
mapCarClass.put("츠", "65");
mapCarClass.put("크", "66");
mapCarClass.put("트", "67");
mapCarClass.put("프", "68");
mapCarClass.put("흐", "69");
mapCarClass.put("기", "70");
mapCarClass.put("니", "71");
mapCarClass.put("디", "72");
mapCarClass.put("리", "73");
mapCarClass.put("미", "74");
mapCarClass.put("비", "75");
mapCarClass.put("시", "76");
mapCarClass.put("이", "77");
mapCarClass.put("지", "78");
mapCarClass.put("치", "79");
mapCarClass.put("키", "80");
mapCarClass.put("티", "81");
mapCarClass.put("피", "82");
mapCarClass.put("히", "83");
mapCarClass.put("육", "84");
mapCarClass.put("해", "85");
mapCarClass.put("공", "86");
mapCarClass.put("국", "87");
mapCarClass.put("합", "88");
mapCarClass.put("_", "89");
mapCarClass.put("배", "90");
mapCarClass.put("외", "98");
if (mapCarClass.get(str) == null)
return -1;
return Short.parseShort((String) mapCarClass.get(str), 16);
}
public static void main(String[] args) {
//String[] array ={"37너6202", "37너6202", "27어7623", "17러0863", "47어5540", "115조1722", "68부7433", "", ""};
String[] array ={"서울4보2416","21러3078", "21러3071", "69오6464", "21러3121", "14두6096", "14두6043" };
//{"서울31바3919", "61두6950", "54누5840", "56보1098", "06무3635", "31두7103", "42러2718 ", "41주4712", "24버1549 ", "68라8528 ", "61가3088 ", ""};
for(int i = 0; i < array.length; i++)
System.out.println(PLUploader.runCarNo2Code(array[i]));
}
}