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
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]));
|
|
|
|
}
|
|
|
|
}
|