투케이2K

50. (TWOK/UTIL) [Web/JavaScript] C_Util - string, 날짜, 형 변환, 정규식 수행 등 유틸 자바스크립트 파일 본문

투케이2K 유틸파일

50. (TWOK/UTIL) [Web/JavaScript] C_Util - string, 날짜, 형 변환, 정규식 수행 등 유틸 자바스크립트 파일

투케이2K 2022. 6. 10. 17:16

[설 명]

프로그램 : Web / JavaScript

설 명 : C_Util - string, 날짜, 형 변환, 정규식 수행 등 유틸 자바스크립트 파일

 

[소스 코드]

/**
* // -----------------------------------------
* [C_Util 설명]
* // -----------------------------------------
* 1. 프로그램 상 필요한 유틸 파일 모음 클래스
* // -----------------------------------------
* 2. CDN 연결 : <script type="text/javascript" src="../경로/C_Util.js"></script>
* // -----------------------------------------
* 3. C_Util 사용 필요 HTML CDN 추가 : 
*   - moment (날짜 및 시간) : <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
*   - lodash (배열 및 객체) : <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
*   - crypto (데이터 암호화) : <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
* // -----------------------------------------
* 4. C_Util_stringNotNull : String 문자열 데이터 널 판단 실시 [true (널 아님) / false (널임)]
* // -----------------------------------------
* 5. C_Util_contains : String 문자열 데이터에서 특정 문자열 포함 확인 [true (포함) / false (포함 안함)]
* // -----------------------------------------
* 6. C_Util_stringMultiContains : String 문자열 다중 contains 문자 포함 확인 실시 [true (포함) / false (포함 안함)]
* // -----------------------------------------
* 7. C_Util_stringEquals : String 문자열 같은지 확인 실시 [true (같음) / false (다름)]
* // -----------------------------------------
* 8. C_Util_stringJsonObjectEnable : String 문자열 데이터를 Json Object 형식으로 변경 가능 한지 체크 실시 [true (파싱 가능) / false (파싱 불가능)]
* // -----------------------------------------
* 9. C_Util_parseJson : string , object 타입 데이터를 jsonObject 객체로 반환 실시 (json 객체 반환 / null 반환)
* // -----------------------------------------
* 10. [moment] : C_Util_dateToMilliseconds : 현재 날짜 및 시간을 밀리세컨드 타임 스탬프 형식 문자열로 반환 실시 [String : 1685321456982]
* // -----------------------------------------
* 11. [moment] : C_Util_milliSecondsToDate : 타임 스탬프 밀리세컨드 13자리 형식을 날짜 및 시간 데이터로 반환 실시 [String : 20220608102030]
* // -----------------------------------------
* 12. [moment] : C_Util_getNowDateNumber : 현재 날짜 및 시간 데이터 24 시간 형태로 출력 실시 [String : 20220608102030]
* // -----------------------------------------
* 13. [lodash] : C_Util_jsonArrayObjectKeySort : json array 및 object 형식 데이터를 특정 key 값 기준으로 정렬 실시 [JsonArray In JsonObject]
* // -----------------------------------------
* 14. [lodash] : C_Util_newJsonSearchKeyValue : json array 및 object 형식 데이터에서 특정 key 값을 찾아서 value 값을 만족하는 새로운 집합 [JsonArray In JsonObject]
* // -----------------------------------------
* 15. [lodash] : C_Util_arrayJoinString : 각 배열 리스트 데이터를 특정 문자 기준으로 합쳐서 String 형태로 반환 [String : 하나^둘]
* // -----------------------------------------
* 16. C_Util_base64EncodeString : base64 인코딩 수행 [String : 인코딩 된 문자열 반환]
* // -----------------------------------------
* 17. C_Util_base64DecodeString : base64 디코딩 수행 [String : 디코딩 된 문자열 반환]
* // -----------------------------------------
* 18. [crypto] C_Util_aes128EncodeString : aes128 인코딩 수행 [String : 인코딩 된 문자열 반환] 
* // -----------------------------------------
* 19. [crypto] C_Util_aes128DecodeString : aes128 디코딩 수행 [String : 디코딩 된 문자열 반환] 
* // -----------------------------------------
* 20. C_Util_urlEncodeString : URL 인코딩 수행 (특수 문자 포함) [String : 인코딩 된 문자열 반환]
* // -----------------------------------------
* 21. C_Util_urlDecodeString : URL 디코딩 수행 (특수 문자 포함) [String : 디코딩 된 문자열 반환]
* // -----------------------------------------
* 22. C_Util_stringIsNumber : string 문자열 데이터 모두 정수 구성 여부 확인 [true (모두 숫자) / false (모두 숫자 아님)]
* // -----------------------------------------
* 23. C_Util_stringMatchType : 정규식 수행 메소드 : 특정 문자로만 데이터가 구성되어있는지 확인 실시 [true (특정 패턴 문자로만 구성) / false (특정 패턴 문자 구성 아님)]
* // -----------------------------------------
* */










// [C_Util_StringNotNull 메소드 정의]
function C_Util_stringNotNull(strData){

    /**
     * // -----------------------------------------
     * [C_Util_stringNotNull 메소드 설명]
     * // -----------------------------------------
     * 설 명 : String 문자열 데이터 널 판단 실시
     * // -----------------------------------------
     * INPUT : 
     *    C_Util_stringNotNull("TWOK");
     *    C_Util_stringNotNull(null);
     * // -----------------------------------------
     * RETURN : true (널 값 아님) / false (널 값 임)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = false;


     // [로직 수행 실시]
     try {

         if (strData != null 
              && String(typeof strData).toLowerCase().trim() != "undefined" 
              && String(typeof strData).toLowerCase().trim() == "string" 
              && strData != "undefined"
              && strData != "null"
              && strData != ""){

              // [리턴 결과 삽입]
              returnData = true;
         }

     }
     catch (exception) {
         console.error("[C_Util_StringNotNull] : [EXCEPTION] : " + exception.message);
     }


     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_StringNotNull] : [START]");
     console.log("[TYPE] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_contains 메소드 정의]
function C_Util_contains(strData, searchData){

    /**
     * // -----------------------------------------
     * [C_Util_contains 메소드 설명]
     * // -----------------------------------------
     * 설 명 : String 문자열 데이터에서 특정 문자열 포함 확인
     * // -----------------------------------------
     * INPUT : 
     *    C_Util_contains("TWOK안녕반가워", "TWOK");
     *    C_Util_contains("TWOK안녕반가워", "2K");
     * // -----------------------------------------
     * RETURN : true (문자열 포함) / false (문자열 포함 안함)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = false;


     // [로직 수행 실시]
     try {

         if (strData != null 
              && String(typeof strData).toLowerCase().trim() != "undefined" 
              && String(typeof strData).toLowerCase().trim() == "string" 
              && strData != "" 

              && searchData != null 
              && String(typeof searchData).toLowerCase().trim() != "undefined" 
              && String(typeof searchData).toLowerCase().trim() == "string" 
              && searchData != "" 

              && strData.indexOf(searchData) >= 0){

              // [리턴 결과 삽입]
              returnData = true;
         }

     }
     catch (exception) {
         console.error("[C_Util_contains] : [EXCEPTION] : " + exception.message);
     }


     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_contains] : [START]");
     console.log("[TYPE] : [STRING] : " + String(typeof strData).toLowerCase().trim());
     console.log("[TYPE] : [SEARCH] : " + String(typeof searchData).toLowerCase().trim());
     console.log("[INPUT] : [STRING] : " + strData);
     console.log("[INPUT] : [SEARCH] : " + searchData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_stringMultiContains 메소드 정의]
function C_Util_stringMultiContains(strData, searchArray){

    /**
     * // -----------------------------------------
     * [C_Util_stringMultiContains 메소드 설명]
     * // -----------------------------------------
     * 설 명 : String 문자열 다중 contains 문자 포함 확인 실시
     * // -----------------------------------------
     * INPUT : 
     *    C_Util_stringMultiContains("TWOK안녕반가워", ["TWOK"]);
     *    C_Util_stringMultiContains("TWOK안녕반가워", ["TWOK", "반가워"]);
     *    C_Util_stringMultiContains("TWOK안녕반가워", ["TWOK", "2K"]);
     * // -----------------------------------------
     * RETURN : true (다중 문자열 포함) / false (다중 문자열 포함 안함)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = true;


     // [로직 수행 실시]
     try {

         if (strData != null 
              && String(typeof strData).toLowerCase().trim() != "undefined" 
              && String(typeof strData).toLowerCase().trim() == "string" 
              && strData != "" 

              && searchArray != null 
              && String(typeof searchArray).toLowerCase().trim() != "undefined" 
              && String(typeof searchArray).toLowerCase().trim() == "object" 
              && searchArray.length > 0){

              // [for 문을 돌면서 문자열 판단 실시]
              for (var i=0; i<searchArray.length; i++){

                   var idxData = searchArray[i];

                   if (idxData != null 
                        && String(typeof idxData).toLowerCase().trim() != "undefined" 
                        && String(typeof idxData).toLowerCase().trim() == "string"
                        && idxData != "" 

                        && strData.indexOf(idxData) >= 0){
                   }
                   else {

                        // [리턴 결과 삽입]
                        returnData = false;
                   }
              }
         }
         else {

              // [리턴 결과 삽입]
              returnData = false;
         }

     }
     catch (exception) {
         console.error("[C_Util_stringMultiContains] : [EXCEPTION] : " + exception.message);

         // [리턴 결과 삽입]
         returnData = false;               
     }


     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_stringMultiContains] : [START]");
     console.log("[TYPE] : [STRING] : " + String(typeof strData).toLowerCase().trim());
     console.log("[TYPE] : [ARRAY] : " + String(typeof searchArray).toLowerCase().trim());
     console.log("[INPUT] : [STRING] : " + strData);
     console.log("[INPUT] : [ARRAY] : " + searchArray);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};











// [C_Util_stringEquals 메소드 정의]
function C_Util_stringEquals(oneString, twoString){

    /**
     * // -----------------------------------------
     * [C_Util_stringEquals 메소드 설명]
     * // -----------------------------------------
     * 설 명 : String 문자열가 서로 같은지 확인 실시
     * // -----------------------------------------
     * INPUT : 
     *    C_Util_stringEquals("TWOK", "TWOK");
     *    C_Util_stringEquals("TWOK", "2K");
     *    C_Util_stringEquals("TWOK", String("TWOK"));
     * // -----------------------------------------
     * RETURN : true (문자열 같음) / false (문자열 다름)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = false;


     // [로직 수행 실시]
     try {

         if (oneString != null 
              && String(typeof oneString).toLowerCase().trim() != "undefined" 
              && String(typeof oneString).toLowerCase().trim() == "string" 

              && twoString != null 
              && String(typeof twoString).toLowerCase().trim() != "undefined" 
              && String(typeof twoString).toLowerCase().trim() == "string"){

              if (oneString == twoString){

                   // [리턴 결과 삽입]
                   returnData = true;
              }
         }

     }
     catch (exception) {
         console.error("[C_Util_stringEquals] : [EXCEPTION] : " + exception.message);            
     }


     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_stringEquals] : [START]");
     console.log("[TYPE] : [ONE] : " + String(typeof oneString).toLowerCase().trim());
     console.log("[TYPE] : [TWO] : " + String(typeof twoString).toLowerCase().trim());
     console.log("[INPUT] : [ONE] : " + oneString);
     console.log("[INPUT] : [TWO] : " + twoString);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_stringJsonObjectEnable 메소드 정의]
function C_Util_stringJsonObjectEnable(jsonData){

    /**
     * // -----------------------------------------
     * [C_Util_stringJsonObjectEnable 메소드 설명]
     * // -----------------------------------------
     * 설 명 : JsonObject 로 파싱 가능한지 체크 실시
     * // -----------------------------------------
     * INPUT : 
     * 
     *    -----------------------------------------
     *    [성공]
     *    -----------------------------------------
     *    C_Util_stringJsonObjectEnable( {"name":"TWOK"} );
     *    -----------------------------------------
     *    var jsonObj = new Object();
     *    jsonObj["name"] = "TWOK";
     *    jsonObj["age"] = 29;
     *    C_Util_stringJsonObjectEnable( JSON.stringify(jsonObj) );
     *    -----------------------------------------
     *    var jsonStr = "{\"name\":\"TWOK\",\"age\":29}";
     *    C_Util_stringJsonObjectEnable( jsonStr );
     *    -----------------------------------------
     * 
     * 
     *    -----------------------------------------
     *    [실패]
     *    -----------------------------------------
     *    C_Util_stringJsonObjectEnable("TWOK");
     *    -----------------------------------------
     *    C_Util_stringJsonObjectEnable(null);
     *    -----------------------------------------
     *    C_Util_stringJsonObjectEnable(1);
     * // -----------------------------------------
     * RETURN : true (파싱 가능) / false (파싱 불가능)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var inputData = null;
     var returnData = false;


     // [로직 수행 실시]
     try {

         if (jsonData != null 
              && String(typeof jsonData).toLowerCase().trim() != "undefined" 

              && String(typeof jsonData).toLowerCase().trim() == "object"

              || String(typeof jsonData).toLowerCase().trim() == "string"

              && JSON.stringify(jsonData) != "null"){
              
                // [json 데이터 담기]
                if (String(typeof jsonData).toLowerCase().trim() == "object"){
                    inputData = JSON.parse(JSON.stringify(jsonData));
                }
                else {
                    inputData = JSON.parse(jsonData);
                }

                /*
                for (var key in inputData){
                    // [KEY / VALUE 확인]
                    console.log("[C_Util_stringJsonObjectEnable] : [key] : [value] : " + key + " / " + inputData[key]);                
                }
                // */

                // [리턴 데이터 삽입]
                returnData = true;
         }
         else {
            inputData = jsonData;
         }

     }
     catch (exception) {
         console.error("[C_Util_stringJsonObjectEnable] : [EXCEPTION] : " + exception.message); 
         inputData = jsonData;
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_stringJsonObjectEnable] : [START]");
     console.log("[TYPE] : " + String(typeof jsonData).toLowerCase().trim());
     console.log("[INPUT] : " + JSON.stringify(inputData));
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_parseJson 메소드 정의]
function C_Util_parseJson(jsonData){

    /**
     * // -----------------------------------------
     * [C_Util_parseJson 메소드 설명]
     * // -----------------------------------------
     * 설 명 : JsonObject 객체 반환 수행 실시
     * // -----------------------------------------
     * INPUT : 
     * 
     *    -----------------------------------------
     *    [성공]
     *    -----------------------------------------
     *    var jsonParse = C_Util_parseJson( {"name":"TWOK"} );
     *    -----------------------------------------
     *    var jsonObj = new Object();
     *    jsonObj["name"] = "TWOK";
     *    jsonObj["age"] = 29;
     *    var jsonParse = C_Util_parseJson( JSON.stringify(jsonObj) );
     *    -----------------------------------------
     *    var jsonStr = "{\"name\":\"TWOK\",\"age\":29}";
     *    var jsonParse = C_Util_parseJson( jsonStr );
     *    -----------------------------------------
     *    for (var key in jsonParse){
     *       console.log("[C_Util_parseJson] : [key] : [value] : " + key + " / " + jsonParse[key]);
     *    }
     *    -----------------------------------------
     * 
     * 
     *    -----------------------------------------
     *    [실패]
     *    -----------------------------------------
     *    C_Util_parseJson("TWOK");
     *    -----------------------------------------
     *    C_Util_parseJson(null);
     *    -----------------------------------------
     *    C_Util_parseJson(1);
     * // -----------------------------------------
     * RETURN : json 객체 (정상 반환) / null (json 변경 실패)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var inputData = null;
     var returnData = null;
     var parseEnable = false;


     // [로직 수행 실시]
     try {

         if (jsonData != null 
              && String(typeof jsonData).toLowerCase().trim() != "undefined" 

              && String(typeof jsonData).toLowerCase().trim() == "object"

              || String(typeof jsonData).toLowerCase().trim() == "string"

              && JSON.stringify(jsonData) != "null"){
              
                // [json 데이터 담기]
                if (String(typeof jsonData).toLowerCase().trim() == "object"){
                    inputData = JSON.parse(JSON.stringify(jsonData));
                }
                else {
                    inputData = JSON.parse(jsonData);
                }

                /*
                for (var key in inputData){
                    // [KEY / VALUE 확인]
                    console.log("[C_Util_parseJson] : [key] : [value] : " + key + " / " + inputData[key]);                
                }
                // */

                // [파싱 가능 여부 값 설정]
                parseEnable = true;

                // [리턴 데이터 삽입]
                returnData = inputData;
         }
         else {
            inputData = jsonData;
         }

     }
     catch (exception) {
         console.error("[C_Util_parseJson] : [EXCEPTION] : " + exception.message); 
         inputData = jsonData;
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_parseJson] : [START]");
     console.log("[INPUT TYPE] : " + String(typeof jsonData).toLowerCase().trim());
     console.log("[INPUT DATA] : " + JSON.stringify(inputData));
     console.log("[PARSE ENABLE] : " + parseEnable);
     console.log("[RETURN TYPE] : " + String(typeof returnData).toLowerCase().trim());
     console.log("[RETURN DATA] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_dateToMilliseconds 메소드 정의]
function C_Util_dateToMilliseconds(){

    /**
     * // -----------------------------------------
     * [C_Util_dateToMilliseconds 메소드 설명]
     * // -----------------------------------------
     * 설 명 : 현재 날짜 및 시간을 타임 스탬프 형식 문자열로 반환 실시
     * // -----------------------------------------
     * INPUT : C_Util_dateToMilliseconds();
     * // -----------------------------------------
     * RETURN : 타임 스탬프 데이터를 String 형식으로 반환 실시 : [13자리] 1648349189806
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

         // 타임 스탬프 (밀리세컨드 13자리 확인 실시)
         var timeStamp = Date.now();


         // [리턴 변수에 삽입 실시]
         returnData = String(timeStamp);

     }
     catch (exception) {
         console.error("[C_Util_dateToMilliseconds] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_dateToMilliseconds] : [START]");
     console.log("[TYPE] : " + String(typeof returnData).toLowerCase().trim());
     console.log("[LENGTH] : " + String(returnData.length));
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_milliSecondsToDate 메소드 정의]
function C_Util_milliSecondsToDate(strData){

    /**
     * // -----------------------------------------
     * [C_Util_milliSecondsToDate 메소드 설명]
     * // -----------------------------------------
     * 설 명 : 타임 스탬프 밀리세컨드 13자리 형식을 날짜 및 시간 데이터로 반환 실시
     * // -----------------------------------------
     * 함수 사용 위한 CDN 추가 : <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
     * // -----------------------------------------
     * INPUT : C_Util_milliSecondsToDate("1654825111520");
     * // -----------------------------------------
     * RETURN : 20220610103831
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 

            && String(typeof strData).toLowerCase().trim() == "string"

            && JSON.stringify(strData) != "null" 
            
            && strData != "null" 
            
            && strData != ""){

                // [리턴 변수에 삽입 실시]
                returnData = String(moment(strData, "x").format("YYYYMMDDHHmmss"));
        }

     }
     catch (exception) {
         console.error("[C_Util_milliSecondsToDate] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_milliSecondsToDate] : [START]");
     console.log("[TYPE] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_getNowDate 메소드 정의]
function C_Util_getNowDateNumber(){

    /**
     * // -----------------------------------------
     * [C_Util_getNowDateNumber 메소드 설명]
     * // -----------------------------------------
     * 설 명 : 현재 날짜 및 시간 데이터 24 시간 형태로 출력 실시
     * // -----------------------------------------
     * 함수 사용 위한 CDN 추가 : <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
     * // -----------------------------------------
     * INPUT : C_Util_getNowDateNumber();
     * // -----------------------------------------
     * RETURN : 20220610092533
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

         // [리턴 변수에 삽입 실시]
         var date = new Date();
         returnData = String(moment(date).format("YYYYMMDDHHmmss"));

     }
     catch (exception) {
         console.error("[C_Util_getNowDateNumber] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_getNowDateNumber] : [START]");
     console.log("[TYPE] : " + String(typeof returnData).toLowerCase().trim());
     console.log("[LENGTH] : " + String(returnData.length));
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_jsonArrayObjectKeySort 메소드 정의]
function C_Util_jsonArrayObjectKeySort(jsonData, orderByKey){

    /**
     * // -----------------------------------------
     * [C_Util_jsonArrayObjectKeySort 메소드 설명]
     * // -----------------------------------------
     * 설 명 : json array 및 object 형식 데이터를 특정 key 값 기준으로 정렬 실시
     * // -----------------------------------------
     * 함수 사용 위한 CDN 추가 : <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
     * // -----------------------------------------
     * INPUT : C_Util_jsonArrayObjectKeySort( [{"idx" : 2, "name" : "TWOK"}, {"idx" : 1, "name" : "투케이"}] , "idx" );
     * // -----------------------------------------
     * RETURN : [{"idx" : 1, "name" : "투케이"}, {"idx" : 2, "name" : "TWOK"}]
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = null;


     // [로직 수행 실시]
     try {

        if (jsonData != null 
            && String(typeof jsonData).toLowerCase().trim() != "undefined" 
            && String(typeof jsonData).toLowerCase().trim() == "object"
            && JSON.stringify(jsonData) != "null" 
            
            && orderByKey != null 
            && String(typeof orderByKey).toLowerCase().trim() != "undefined" 
            && String(typeof orderByKey).toLowerCase().trim() == "string"
            && JSON.stringify(orderByKey) != "null"
            && orderByKey != "null" 
            && orderByKey != ""){

                // [리턴 변수에 삽입 실시]
                returnData = _.orderBy(jsonData, [String(orderByKey)], ["asc"]);
        }

     }
     catch (exception) {
         console.error("[C_Util_jsonArrayObjectKeySort] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_jsonArrayObjectKeySort] : [START]");
     console.log("[INPUT TYPE] : " + String(typeof jsonData).toLowerCase().trim());
     console.log("[INPUT DATA] : " + JSON.stringify(jsonData));
     console.log("[ORDER BY KEY] : " + orderByKey);
     console.log("[RETURN TYPE] : " + String(typeof returnData).toLowerCase().trim());
     console.log("[RETURN DATA] : " + JSON.stringify(returnData));
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_newJsonSearchKeyValue 메소드 정의]
function C_Util_newJsonSearchKeyValue(jsonData, searchKey, searchValue){

    /**
     * // -----------------------------------------
     * [C_Util_newJsonSearchKeyValue 메소드 설명]
     * // -----------------------------------------
     * 설 명 : json array 및 object 형식 데이터에서 특정 key 값을 찾아서 value 값을 만족하는 새로운 집합 반환
     * // -----------------------------------------
     * 함수 사용 위한 CDN 추가 : <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
     * // -----------------------------------------
     * INPUT : C_Util_newJsonSearchKeyValue( [{"idx" : 2, "name" : "TWOK"}, {"idx" : 1, "name" : "투케이"}, {"idx" : 3, "name" : "투케이"}] , "name", "투케이" );
     * // -----------------------------------------
     * RETURN : [{"idx" : 1, "name" : "투케이"}, {"idx" : 3, "name" : "투케이"}]
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = null;


     // [로직 수행 실시]
     try {

        if (jsonData != null 
            && String(typeof jsonData).toLowerCase().trim() != "undefined" 
            && String(typeof jsonData).toLowerCase().trim() == "object"
            && JSON.stringify(jsonData) != "null" 
            
            && searchKey != null 
            && String(typeof searchKey).toLowerCase().trim() != "undefined" 
            && String(typeof searchKey).toLowerCase().trim() == "string"
            && JSON.stringify(searchKey) != "null"
            && searchKey != "null" 
            && searchKey != "" 
            
            && searchValue != null
            && String(typeof searchValue).toLowerCase().trim() != "undefined"){

                // [리턴 변수에 삽입 실시]
                returnData = _.filter(jsonData, [String(searchKey) , searchValue]);
        }

     }
     catch (exception) {
         console.error("[C_Util_newJsonSearchKeyValue] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_newJsonSearchKeyValue] : [START]");
     console.log("[INPUT TYPE] : " + String(typeof jsonData).toLowerCase().trim());
     console.log("[INPUT DATA] : " + JSON.stringify(jsonData));
     console.log("[SEARCH KEY] : " + searchKey);
     console.log("[SEARCH VALUE] : " + searchValue);
     console.log("[RETURN TYPE] : " + String(typeof returnData).toLowerCase().trim());
     console.log("[RETURN DATA] : " + JSON.stringify(returnData));
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};





// [C_Util_arrayJoinString 메소드 정의]
function C_Util_arrayJoinString(array, joinString){

    /**
     * // -----------------------------------------
     * [C_Util_arrayJoinString 메소드 설명]
     * // -----------------------------------------
     * 설 명 : 각 배열 리스트 데이터를 특정 문자 기준으로 합쳐서 String 형태로 반환
     * // -----------------------------------------
     * 함수 사용 위한 CDN 추가 : <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
     * // -----------------------------------------
     * INPUT : C_Util_arrayJoinString( ["하나" , "둘"] , "^" );
     * // -----------------------------------------
     * RETURN : 하나^둘
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (array != null 
            && String(typeof array).toLowerCase().trim() != "undefined" 
            && String(typeof array).toLowerCase().trim() == "object"
            && JSON.stringify(array) != "null" 
            
            && joinString != null 
            && String(typeof joinString).toLowerCase().trim() != "undefined" 
            && String(typeof joinString).toLowerCase().trim() == "string"
            && JSON.stringify(joinString) != "null"
            && joinString != "null" 
            && joinString != ""){

                // [리턴 변수에 삽입 실시]
                returnData = _.join(array, joinString);
        }

     }
     catch (exception) {
         console.error("[C_Util_arrayJoinString] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_arrayJoinString] : [START]");
     console.log("[INPUT TYPE] : " + String(typeof array).toLowerCase().trim());
     console.log("[INPUT DATA] : " + JSON.stringify(array));
     console.log("[JOIN STRING] : " + joinString);
     console.log("[RETURN TYPE] : " + String(typeof returnData).toLowerCase().trim());
     console.log("[RETURN DATA] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_base64EncodeString 메소드 정의]
function C_Util_base64EncodeString(strData){

    /**
     * // -----------------------------------------
     * [C_Util_base64EncodeString 메소드 설명]
     * // -----------------------------------------
     * 설 명 : base64 인코딩 수행
     * // -----------------------------------------
     * INPUT : C_Util_base64EncodeString( "hello" );
     * // -----------------------------------------
     * RETURN : aGVsbG8= (base64 인코딩 문자열)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 
            && String(typeof strData).toLowerCase().trim() == "string"
            && JSON.stringify(strData) != "null"
            && strData != "null" 
            && strData != ""){

                // [리턴 변수에 삽입 실시]
                returnData = btoa(strData);
        }

     }
     catch (exception) {
         console.error("[C_Util_base64EncodeString] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_base64EncodeString] : [START]");
     console.log("[TYPE] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return String(returnData);     
};





// [C_Util_base64DecodeString 메소드 정의]
function C_Util_base64DecodeString(encodeString){

    /**
     * // -----------------------------------------
     * [C_Util_base64DecodeString 메소드 설명]
     * // -----------------------------------------
     * 설 명 : base64 디코딩 수행
     * // -----------------------------------------
     * INPUT : C_Util_base64DecodeString( "aGVsbG8=" );
     * // -----------------------------------------
     * RETURN : hello (base64 복호화 문자열)
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (encodeString != null 
            && String(typeof encodeString).toLowerCase().trim() != "undefined" 
            && String(typeof encodeString).toLowerCase().trim() == "string"
            && JSON.stringify(encodeString) != "null"
            && encodeString != "null" 
            && encodeString != ""){

                // [리턴 변수에 삽입 실시]
                returnData = atob(encodeString);
        }

     }
     catch (exception) {
         console.error("[C_Util_base64DecodeString] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_base64DecodeString] : [START]");
     console.log("[TYPE] : " + String(typeof encodeString).toLowerCase().trim());
     console.log("[INPUT] : " + encodeString);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return String(returnData);     
};










// [C_Util_aes128EncodeString 메소드 정의]
function C_Util_aes128EncodeString(strKey, strIv, strData){

    /**
     * // -----------------------------------------
     * [C_Util_aes128EncodeString 메소드 설명]
     * // -----------------------------------------
     * 설 명 : aes128 인코딩 수행
     * // -----------------------------------------
     * INPUT : C_Util_aes128EncodeString( "0123456789abcdef" , "" , "hello" );
     * // -----------------------------------------
     * RETURN : Z0x+8454yr2c7JwSWCOmOQ==
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (strKey != null 
            && String(typeof strKey).toLowerCase().trim() != "undefined" 
            && String(typeof strKey).toLowerCase().trim() == "string"
            && JSON.stringify(strKey) != "null"
            && strKey != "null" 
            && strKey != "" 
            
            && strIv != null 
            && String(typeof strIv).toLowerCase().trim() != "undefined" 
            && String(typeof strIv).toLowerCase().trim() == "string"
            && JSON.stringify(strIv) != "null"
            && strIv != "null" 
            
            && strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 
            && String(typeof strData).toLowerCase().trim() == "string"
            && JSON.stringify(strData) != "null"
            && strData != "null"
            && strData != ""){

                // [리턴 변수에 삽입 실시]
                returnData = CryptoJS.AES.encrypt(
                    strData, 
                    CryptoJS.enc.Utf8.parse(strKey), {
                    iv: CryptoJS.enc.Utf8.parse(strIv), // [Enter IV (Optional) 지정 방식]
                    padding: CryptoJS.pad.Pkcs7,
                    mode: CryptoJS.mode.CBC // [cbc 모드 선택]
                });
        }

     }
     catch (exception) {
         console.error("[C_Util_aes128EncodeString] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_aes128EncodeString] : [START]");
     console.log("[TYPE KEY] : " + String(typeof strKey).toLowerCase().trim());
     console.log("[TYPE IV] : " + String(typeof strIv).toLowerCase().trim());
     console.log("[TYPE DATA] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT KEY] : " + strKey);
     console.log("[INPUT IV] : " + strIv);
     console.log("[INPUT DATA] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return String(returnData);     
};










// [C_Util_aes128DecodeString 메소드 정의]
function C_Util_aes128DecodeString(strKey, strIv, strData){

    /**
     * // -----------------------------------------
     * [C_Util_aes128DecodeString 메소드 설명]
     * // -----------------------------------------
     * 설 명 : aes128 디코딩 수행
     * // -----------------------------------------
     * INPUT : C_Util_aes128DecodeString( "0123456789abcdef" , "" , "Z0x+8454yr2c7JwSWCOmOQ==" );
     * // -----------------------------------------
     * RETURN : hello
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (strKey != null 
            && String(typeof strKey).toLowerCase().trim() != "undefined" 
            && String(typeof strKey).toLowerCase().trim() == "string"
            && JSON.stringify(strKey) != "null"
            && strKey != "null" 
            && strKey != "" 
            
            && strIv != null 
            && String(typeof strIv).toLowerCase().trim() != "undefined" 
            && String(typeof strIv).toLowerCase().trim() == "string"
            && JSON.stringify(strIv) != "null"
            && strIv != "null" 
            
            && strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 
            && String(typeof strData).toLowerCase().trim() == "string"
            && JSON.stringify(strData) != "null"
            && strData != "null"
            && strData != ""){

                // [AES 복호화 수행]
                const cipher = CryptoJS.AES.decrypt(
                    strData, 
                    CryptoJS.enc.Utf8.parse(strKey), {
                    iv: CryptoJS.enc.Utf8.parse(strIv), // [Enter IV (Optional) 지정 방식]
                    padding: CryptoJS.pad.Pkcs7,
                    mode: CryptoJS.mode.CBC // [cbc 모드 선택]
                });

                // [리턴 변수에 삽입 실시]
                returnData = cipher.toString(CryptoJS.enc.Utf8);
        }

     }
     catch (exception) {
         console.error("[C_Util_aes128DecodeString] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_aes128DecodeString] : [START]");
     console.log("[TYPE KEY] : " + String(typeof strKey).toLowerCase().trim());
     console.log("[TYPE IV] : " + String(typeof strIv).toLowerCase().trim());
     console.log("[TYPE DATA] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT KEY] : " + strKey);
     console.log("[INPUT IV] : " + strIv);
     console.log("[INPUT DATA] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return String(returnData);     
};










// [C_Util_urlEncodeString 메소드 정의]
function C_Util_urlEncodeString(strData){

    /**
     * // -----------------------------------------
     * [C_Util_urlEncodeString 메소드 설명]
     * // -----------------------------------------
     * 설 명 : url 인코딩 수행 실시
     * // -----------------------------------------
     * INPUT : C_Util_urlEncodeString( "투케이,29,man" );
     * // -----------------------------------------
     * RETURN : %ED%88%AC%EC%BC%80%EC%9D%B4%2C29%2Cman
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 
            && String(typeof strData).toLowerCase().trim() == "string"
            && JSON.stringify(strData) != "null"
            && strData != "null" 
            && strData != ""){

                // [리턴 변수에 삽입 실시]
                returnData = encodeURIComponent(strData);
        }

     }
     catch (exception) {
         console.error("[C_Util_urlEncodeString] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_urlEncodeString] : [START]");
     console.log("[TYPE] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return String(returnData);     
};










// [C_Util_urlDecodeString 메소드 정의]
function C_Util_urlDecodeString(strData){

    /**
     * // -----------------------------------------
     * [C_Util_urlDecodeString 메소드 설명]
     * // -----------------------------------------
     * 설 명 : url 디코딩 수행 실시
     * // -----------------------------------------
     * INPUT : C_Util_urlDecodeString( "%ED%88%AC%EC%BC%80%EC%9D%B4%2C29%2Cman" );
     * // -----------------------------------------
     * RETURN : 투케이,29,man
     * // -----------------------------------------
     * */


     // [리턴 변수 선언 실시]
     var returnData = "";


     // [로직 수행 실시]
     try {

        if (strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 
            && String(typeof strData).toLowerCase().trim() == "string"
            && JSON.stringify(strData) != "null"
            && strData != "null" 
            && strData != ""){

                // [리턴 변수에 삽입 실시]
                returnData = decodeURIComponent(strData);
        }

     }
     catch (exception) {
         console.error("[C_Util_urlDecodeString] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_urlDecodeString] : [START]");
     console.log("[TYPE] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return String(returnData);     
};










// [C_Util_stringIsNumber 메소드 정의]
function C_Util_stringIsNumber(strData){

    /**
     * // -----------------------------------------
     * [C_Util_stringIsNumber 메소드 설명]
     * // -----------------------------------------
     * 설 명 : string 문자열 데이터 모두 정수 구성 여부 확인
     * // -----------------------------------------
     * INPUT : 
     *    C_Util_stringIsNumber( "123" );
     *    C_Util_stringIsNumber( "+123" );
     *    C_Util_stringIsNumber( "-123" );
     * 
     *    C_Util_stringIsNumber( "123가" );
     *    C_Util_stringIsNumber( "123hello" );
     *    C_Util_stringIsNumber( "123@" );
     * // -----------------------------------------
     * RETURN : true (모두 숫자 구성) / false (모두 숫자 아님)
     * // -----------------------------------------
     * */


    // [숫자 판단 내부 함수]
    function isNum(s) {
        s += ''; // 문자열로 변환
        s = s.replace(/^\s*|\s*$/g, ''); // 좌우 공백 제거
        if (s == '' || isNaN(s)) return false;
        return true;
    };      


     // [리턴 변수 선언 실시]
     var returnData = false;


     // [로직 수행 실시]
     try {

        if (strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 
            && String(typeof strData).toLowerCase().trim() == "string"
            && JSON.stringify(strData) != "null"
            && strData != "null" 
            && strData != ""){

                // [리턴 변수에 삽입 실시]
                returnData = isNum(strData);
        }

     }
     catch (exception) {
         console.error("[C_Util_stringIsNumber] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_stringIsNumber] : [START]");
     console.log("[TYPE] : " + String(typeof strData).toLowerCase().trim());
     console.log("[INPUT] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};










// [C_Util_stringMatchType 메소드 정의]
function C_Util_stringMatchType(intType, strData){

    /**
     * // -----------------------------------------
     * [C_Util_stringMatchType 메소드 설명]
     * // -----------------------------------------
     * 설 명 : 정규식 수행 메소드 : 특정 문자로만 데이터가 구성되어있는지 확인 실시
     * // -----------------------------------------
     * INPUT : 
     *    C_Util_stringMatchType( 1, "123" ); // [숫자 로만 구성]
     *    C_Util_stringMatchType( 2, "twokHELLO" ); // [영문자 로만 구성]
     *    C_Util_stringMatchType( 3, "투케이" ); // [한글 로만 구성]
     * // -----------------------------------------
     * RETURN : true (특정 문자로만 구성) / false (특정 문자로만 구성되어있지 않음)
     * // -----------------------------------------
     * */     


     // [리턴 변수 선언 실시]
     var typeString = "";
     var returnData = false;


     // [로직 수행 실시]
     try {

        if (strData != null 
            && String(typeof strData).toLowerCase().trim() != "undefined" 
            && String(typeof strData).toLowerCase().trim() == "string"
            && JSON.stringify(strData) != "null"
            && strData != "null" 
            && strData != ""){

                if (intType == 1){
                    typeString = "숫자 구성 판단";

                    // [정규식 형태 선언 실시]
                    var reg_1 = /^[0-9]+$/;

                    // [리턴 변수에 삽입 실시]
                    returnData = reg_1.test(strData);
                }
                else if (intType == 2){
                    typeString = "영문자 구성 판단";

                    // [정규식 형태 선언 실시]
                    var reg_2 = /^[a-z|A-Z]+$/;

                    // [리턴 변수에 삽입 실시]
                    returnData = reg_2.test(strData);
                }
                else if (intType == 3) {
                    typeString = "한글 구성 판단";

                    // [정규식 형태 선언 실시]
                    var reg_3 = /^[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]+$/;

                    // [리턴 변수에 삽입 실시]
                    returnData = reg_3.test(strData);
                }
                else {
                    typeString = "타입 선택 에러";
                }
        }
     }
     catch (exception) {
         console.error("[C_Util_stringMatchType] : [EXCEPTION] : " + exception.message); 
     }

     
     ///* [로그 출력 실시]
     console.log("");
     console.log("=========================================");
     console.log("[C_Util_stringMatchType] : [START]");
     console.log("[INPUT TYPE] : " + typeString);
     console.log("[INPUT STRING] : " + strData);
     console.log("[RETURN] : " + returnData);
     console.log("=========================================");
     console.log("");
     // */


     // [리턴 결과 반환]
     return returnData;     
};
 

[첨부 파일]

 

C_Util.js
0.05MB

반응형
Comments