[ Nexacro.Component -  div minimize ]

 


/*++
프로그램 설명     : minimize Div들의 onresize를 위해 미리 정보를 저장
@ Name            : gfn_InitMinimizeDiv
@ Parameter       : paDiv : Div Object의 Array, (예, [div1, div2, div3])
@ Parameter       : pbResizeAll : Div 전체를 Anchor에 상관없이 resize 하려는 경우 true
@ Return          : none
*/

function gfn_InitMinimizeDiv(paDiv, pbResizeAll)

{

    if (gfn_IsNull(pbResizeAll)) pbResizeAll = false;

    _bResizeAll = pbResizeAll;

    

    var dsObj = eval(_gfn_AddDsAnchor());

    

    if (dsObj.rowcount == 0) {

        for (var i = 0; i < paDiv.length; i++) {

            var nRow = dsObj.addRow();

            dsObj.setColumn(nRow, "id", paDiv[i].name);

            dsObj.setColumn(nRow, "state", "maximize");

            dsObj.setColumn(nRow, "org_top", paDiv[i].position.top);

            dsObj.setColumn(nRow, "org_height", paDiv[i].position.height);

            dsObj.setColumn(nRow, "cur_top", paDiv[i].position.top);

            dsObj.setColumn(nRow, "cur_height", paDiv[i].position.height);

            dsObj.setColumn(nRow, "anchor", paDiv[i].anchor);

        }

    }

}

 

 

/*++
프로그램 설명     : Div 간의 minimize/maximize 기능
@ Name            : gfn_MinimizeDiv
@ Parameter       : obj : Div에 포함된 Component (이벤트 발생 Object)
@ Parameter       : paDiv : Div Object의 Array, (예, [div1, div2, div3])
@ Return          : none
*/

function gfn_MinimizeDiv(obj, paDiv)

{

    var dsObj = eval(_gfn_AddDsAnchor());

    var nMinHeight = 37; //minimize될때의 Div Height

    var nHeightSpace = 0; //Div들간의 minimize/maximize 될때 생기는 높이값

    

    if (gfn_IsNull(obj.state)) obj.state = "maximize";

    

    if (obj.state == "maximize") {

        obj.state = "minimize";

        obj.class = "btn_WFDA_maximize";

    } else {

        obj.state = "maximize";

        obj.class = "btn_WFDA_minimize";

    }

    

    if (dsObj.rowcount == 0) {

        for (var i = 0; i < paDiv.length; i++) {

            var nRow = dsObj.addRow();

            dsObj.setColumn(nRow, "id", paDiv[i].name);

            dsObj.setColumn(nRow, "state", "maximize");

            dsObj.setColumn(nRow, "org_top", paDiv[i].position.top);

            dsObj.setColumn(nRow, "org_height", paDiv[i].position.height);

            dsObj.setColumn(nRow, "cur_top", paDiv[i].position.top);

            dsObj.setColumn(nRow, "cur_height", paDiv[i].position.height);

            dsObj.setColumn(nRow, "anchor", paDiv[i].anchor);

        }

    }

 

    dsObj.keystring = "S:+org_top"; //정렬

    dsObj.setColumn(dsObj.findRow("id", obj.parent.name), "state", obj.state);

    

    if (obj.state == "minimize") { //Div접음

        for (var nRow = 0; nRow < dsObj.rowcount; nRow++) {

            var oDiv = eval(dsObj.getColumn(nRow, "id"));

            

            if (obj.parent.name == oDiv.name) {

                nHeightSpace = oDiv.position.height - nMinHeight;

                oDiv.position.height = nMinHeight;

                

                if (nRow < dsObj.rowcount && nHeightSpace > 0) {

                    for (var i = nRow + 1; i < dsObj.rowcount; i++) {

                        var oNextDiv = eval(dsObj.getColumn(i, "id"));

                        oNextDiv.position.top = oNextDiv.position.top - nHeightSpace;

                        

                        if (dsObj.getColumn(i, "state") == "minimize") {

                            oNextDiv.position.height = nMinHeight;

                        } else {

                            nHeightSpace = 0;

                        }

                    }

                }

            }

        }

    } else { //Div펼침

        for (var nRow = 0; nRow < dsObj.rowcount; nRow++) {

            var oDiv = eval(dsObj.getColumn(nRow, "id"));

            

            if (obj.parent.name == oDiv.name) {

                nHeightSpace = dsObj.getColumn(nRow, "cur_height") - oDiv.position.height;

                oDiv.position.height = dsObj.getColumn(nRow, "cur_height");

                

                if (nRow < dsObj.rowcount && nHeightSpace > 0) {

                    for (var i = nRow + 1; i < dsObj.rowcount; i++) {

                        var oNextDiv = eval(dsObj.getColumn(i, "id"));

                        

                        if (dsObj.getColumn(i, "state") == "minimize") {

                            oNextDiv.position.top = oNextDiv.position.top + nHeightSpace;

                            oNextDiv.position.height = nMinHeight;

                        } else {

                            var nOrgHeight = dsObj.getColumn(i, "cur_height");

                            var nCurHeight = oNextDiv.position.height;

                            

                            oNextDiv.position.top = oNextDiv.position.top + nHeightSpace;

                            

                            if (nOrgHeight == nCurHeight) {

                                oNextDiv.position.height = nOrgHeight;

                            } else {

                                oNextDiv.position.height = nCurHeight - nHeightSpace;

                                nHeightSpace = 0;

                            }

                        }

                    }

                }

            }

        }

    }

}

 

 

/*++
프로그램 설명     : Div 간의 minimize/maximize 정보를 저장할 Dataset을 생성 (개발자 사용금지)
@ Name            : _gfn_AddDsAnchor
@ Parameter       : none
@ Return          : Dataset Name
*/

function _gfn_AddDsAnchor()

{

    return _gfn_AddDataset("_dsAnchor", ["id", "state", "org_top", "org_height", "cur_top", "cur_height", "anchor"]

                                      , ["string", "string", "int", "int", "int", "int", "string"]);

}

 

 

/*++
프로그램 설명     : Dataset을 추가생성 (개발자 사용금지)
@ Name            : _gfn_AddDataset
@ Parameter       : psDatasetName : 생성할 Dataset명
@ Parameter       : paColumnName : Dataset에 들어갈 Column명 Array
@ Parameter       : paType : Column의 Type Array
@ Return          : Dataset Name
*/

function _gfn_AddDataset(psDatasetName, paColumnName, paType)

{

    //Dataset 존재여부 확인 및 생성

    if (!isValidObject(psDatasetName)) {

        var oDs = new Dataset;

        oDs.name = psDatasetName;

        this.addChild(psDatasetName, oDs);

        

        if (!gfn_IsNull(paColumnName)) {        

            var dsObj = eval(psDatasetName);

            

            for (var i = 0; i < paColumnName.length; i++) {

                dsObj.addColumn(paColumnName[i], paType[i]);

            }

        }

    }

    

    return psDatasetName;

}

 

/*++
프로그램 설명     : 값이 존재하는지 여부 체크
@ Name            : gfn_IsNull
@ Parameter       : Value
@ Return          : true / false
*/

function gfn_IsNull(val)

{

    var sVal = new String(val);

    

    if (sVal == null || sVal == "null" || sVal.trim().length <= 0 || escape(sVal) == "undefined") {

        return true;

    } else {

        return false;

    }

}

 

☞  

 

☞  

 
 
 
 

  

Posted by 농부지기
,

[ Nexacro.Component -  전체컴포넌트 검색 ]

     

/******************************************************************************************
@desc    상태별 콤보넌트 처리

@호출예 : gfn_EnableComponentMain(this.components, bEnable);
          gfn_EnableComponentMain(tab.pageSpec.divSpec.components, bEnable);
 *****************************************************************************************/

function gfn_EnableComponentMain(objComp, bEnable){
    // 1. root components
    
for(var i=0; i<objComp.length; i++){
        
var sType = gfn_GetCompType(objComp[i]);
        
        
if (sType == 'Div' || sType=='Tab'){
            gfn_EnableComponentMain(objComp[i].components, bEnable);
        }
else if (sType=='Tabpage' || sType=='Grid' || sType=='Static'){
            //skip
        }
else{
            
var sDefaultEnable = objComp[i].DefaultEnable;
            
if (sDefaultEnable == "false")
                objComp[i].enable = false;
            else if (sDefaultEnable == "
true")
                objComp[i].enable = true;
            else

                objComp[i].enable = bEnable;
        }
    }
}

function cfn_GetCompType(objComp){

    return ((objComp+"").substr(8)).replace("]", "");

}

☞  

 
 

 

--  아래는 위 function에서 필요한  공통함수들 임 --

/*++

@desc  각 컴포넌트 type return

@name  gfn_GetCompType

@param  objComp - component name

@return  componet type

*/

function gfn_GetCompType(objComp){

    return ((objComp+"").substr(8)).replace("]", "");

}

'Nexacro-Function > Componet.Object.Form' 카테고리의 다른 글

Nexacro.Component - Object Properties  (0) 2017.01.28
Nexacro.Component - combo  (0) 2017.01.28
Nexacro.Component - checkBox  (0) 2017.01.28
Nexacro.Component - div minimize  (0) 2017.01.28
Nexacro.Component - component  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.Component -  component ]

 

/*==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * Group : 1. 기타
 **=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


/******************************************************************************************
 * 기능 : component path 구하기
 * 인자 : Object
 * 리턴 :
 * 예문 :
 *****************************************************************************************/

var iCompFullPath='';
function gfn_CompFullPath(obj)
{
    var rtn = "";

    if(iCompFullPath == ""){
        iCompFullPath = obj.name;
    }

    if(obj.parent.toString().toUpperCase() == "[OBJECT CHILDFRAME]")
    {
       var arr = iCompFullPath.split(".");

       for ( var i = (arr.length-2); i >=0; i -- ) {
          rtn = rtn + arr[i] + ".";
       }

       iCompFullPath = rtn.substr(0,rtn.length -2);

       return ;
    }

    var obj = obj.parent;
    iCompFullPath = iCompFullPath + "." + obj.name;

    gfn_CompFullPath(obj);
}


//호출 : gfn_setBindItem("csAsstClsCd", "tab.page1.divRight.csAsstCls.edtCode"
                         ,"dsAsstPlan", "ASST_CLS_CD");
//정의 : 컴포넌트에 대해서 동적으로 script를 이용해서 binding 처리
//인자 : psBindId - bind id
//       psBindComp - component id
//       strDS      - bind할 dataset
//       strCol     - bind할 column id

function gfn_setBindItem(psBindId, psBindComp,strDS,strCol)

{

    var newbinditem = new BindItem;

    newbinditem.init(psBindId, psBindComp, "value", strDS,strCol);

    this.addChild(psBindId, newbinditem);

    eval(psBindId).bind();

}

 

/******************************************************************************************
// 다음 FOCUS 컴포넌트 얻은 후 Focus위치시키기

*****************************************************************************************/

function gfn_setEvent(obj, e:KeyEventInfo) {

    var objNComp = getNextComponent(obj, true);

    if(objNComp <> null) {

        objNComp.setFocus();

    }

}


/******************************************************************************************
 * 기능 : null 값일경우 치환
 * 인자 : arg1 : 실제의 값
 *        arg2 : 치환될 값
 * 리턴 :
 * 예문 :
 *****************************************************************************************/

function gfn_NVL(arg1, arg2)

{

    if(gfn_IsNull(arg1)){

        return arg2;

    }else{

        return arg1;

    }

}

 


/******************************************************************************************
 * 기능 : 입력값이 null에 해당하는 경우 모두를 한번에 체크한다.
 * 인자 : sValue : 체크할 문자열( 예 : null 또는 undefined 또는 "" 또는 "abc" )
 * 리턴 : true - undefined, null, NaN, "", Array.length = 0인 경우
 *        fasle - 위값 이외의 경우
 * 예문 :
 *****************************************************************************************/

function fn_IsNull(sValue)

{

    if( String(sValue).valueOf() == "undefined") return true;

        

    if( sValue == null ) return true;

 

    if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined" ) )  return true;

 

    if( sValue.length == 0 ) return true;

 

    return false;

}

 

/*******************************************************************************
 ★ 설명
    전각문자를 반각문자로
    ( 참고 : 전각문자는 "정사각형" 안에 들어가는 문자이고, 반각은 그 정사각형의 반쪽에 들어가는 문자이다.
             전각문자의 폭은, 반각문자의 2배입니다.
             예를 들어 숫자 "3" 은, 한글 "가"의 절반의 폭만을 가지고 있습니다.
             그래서 영문과 숫자 등은 반각이고, 한글이나 한자들은 전각문자입니다.
             다만, 영문과 숫자를 전각으로 표현할 수도 있습니다.
      예 : 전각문자 ==> ※★0+
           반각문자 ==> 1a )
 ★ Parameter
    1. sFull   : 전각문자( 예 : "0+" )
 ★ return
    - 성공 = 반각문자 ( 예 : "0+" )
    - 실패 = ""
 ******************************************************************************/

function fn_Full2Half(sFull)

{

 var i, c, sHalf = "";

  

 if( fn_IsNull(sFull) )  return "";

 

 for( i=0 ; i < sFull.length ; i++ )

 {

  var c = sFull.charCodeAt(i);

 

  if (c == 12288)

   sHalf += unescape("%20");

  else if ( (c >= 65281) && (c <= 65374) )

   sHalf += unescape("%"+(c-65248).toString(16));

  else

   sHalf += sFull.charAt(i);

 }

 return  sHalf;

}

 

/*******************************************************************************
 ★ 설명
    반각문자를 전각문자로
 ★ Parameter
    1. sHalf   : 반각문자( 예 : "0+" )
 ★ return
    - 성공 = 전각문자 ( 예 : "0+" )
    - 실패 = ""
 ******************************************************************************/

function fn_Half2Full(sHalf)

{

    var rTmp = "";

    var iTmp = "";

    var i;

 

  if( fn_IsNull(sHalf) )  return "";

  

    for( i = 0 ; i < sHalf.length ; i++ )

    {

        //기본 아스키 코드 값을 벗어난 경우(한글)는 전자로 변환할 필요 없음.

        if( (sHalf.charCodeAt(i) >= 32) && (sHalf.charCodeAt(i) <= 126) )

        {

   if( sHalf.charCodeAt(i) == 32 )

    iTmp = unescape("%u"+(12288).toString(16));

            else

    iTmp = sHalf.charCodeAt(i) + 65248;

  }

        else

            iTmp = sHalf.charCodeAt(i);

 

 

  if( sHalf.charCodeAt(i) == 32 )

   rTmp = rTmp + (iTmp);

  else

   rTmp = rTmp + String.fromCharCode(iTmp);

    }

 

    return rTmp;

}


/*******************************************************
 * @name : gf_getBindObjInfo
 * @description : 컴포넌트의 바인딩 정보를 알아낸다
 * @param : component obj
 * @return : obj
 * @example :    var obj = gf_getBindObjInfo(Combo00);
                                 //trace(obj.datasetid);
                                 //trace(obj.columnid);
 *******************************************************/

 function gf_getBindObjInfo(findObj)

 {

         var obj = {};

         var bindObj = this.binds;

         for(var i=0 ; i<bindObj.length ; i++){

                 

                if(findObj.name != bindObj[i].compid) continue;

                 

                obj.datasetid = bindObj[i].datasetid;

                 obj.columnid = bindObj[i].columnid;

         }

         

        return obj;

 }

 /******************************************************************************
  * Function명 : gf_cutIndexByBytes
  * 설명       : byte수 체크하여 잘라낼 시작 index값을 반환
  * Params     : String
  * Return     : 잘라낼 시작 index(-1이면 잘라낼 값 없음.)
  ******************************************************************************/

 function gf_cutIndexByBytes(str, maxByte) {

     if ( gf_isNull(str) ) return;

     

    var bytes = 0;

 

    for (var i=0, n=str.length; i < n; i++) {

         var oneChar = escape(str.charAt(i));

         if ( oneChar.length == 1 ) {

             bytes ++;

         } else if (oneChar.indexOf("%u") != -1) {

             bytes += 2;

         } else if (oneChar.indexOf("%") != -1) {

             bytes += oneChar.length/3;

         }

         

        if (bytes > maxByte) {

                         return i;

         }

     }

 

    return -1;

 }

 

 /******************************************************************************
  * Function명 : gf_checkBytes()
  * 설명       : Edit, TextArea의 byte수를 체크하고 초과되는 내용을 자동으로 잘라낸다. ontextchange 이벤트에서 호출.
  * Params     : obj - 체크할 object
                 autoCutYn - 자동으로 잘라낼지 여부(파라메터 넘기지 않으면 기본값 'Y'로 처리)
  * Return     : boolean - true 또는 false
  ******************************************************************************/

 function gf_checkBytes(obj, e:TextChangeEventInfo) {

     var str = e.posttext;

     var maxByte = obj.maxlength;

     

    if ( gf_isNull(str) ) return true;

     if ( gf_isNull(maxByte) || toNumber(maxByte) < 0 ) return true;

     

    var cutIdx = gf_cutIndexByBytes(str, maxByte);

     

    if (cutIdx > 0)

     {

                 obj.value = str.substring(0, cutIdx);

                 return false;

     }

     

    return true;

 }

 

/******************************************************************************************
 * 기      능 : 각 컴포넌트 type return
 * 인      자 : objComp - component name
 * 반      환 : componet type
 *****************************************************************************************/

function gfn_GetCompType(objComp){

    return ((objComp+"").substr(8)).replace("]", "");

}

 

/******************************************************************************************
 * 기      능 : 동적 binding
 *              사용자 object를 만든 후 form에 추가했을 경우 dataset과 binding을 할 수 없다.
 *              이때 binding을 처리 해준다.
 * 인      자 : psBindId - bind id
 *              bindComp - stirng형 component id
 * 반      환 : componet type
 *****************************************************************************************/

function gfn_setBindItem(psBindId, bindComp,strDS,strCol)

{

    var newbinditem = new BindItem;

    newbinditem.init(psBindId, bindComp, "value", strDS,strCol);

    this.addChild(psBindId, newbinditem);

    eval(psBindId).bind();

}

 
 

  

 

Posted by 농부지기
,

[ Nexacro.Number -  기타 ]

 

/*==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * Group : 9. 기타
 **=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


/******************************************************************************************
 * 기능 : 정수인 nStart ~ nEnd의 범위에 있는 숫자에 대하여 random값을 return한다.
 * 인자 :  1. nStart : 시작숫자 ( 단, 정수, 만일 정수가 아니면 Math.floor(nStart)를 적용함)
            2. nEnd   : 끝숫자 ( 단, 정수, 만일 정수가 아니면 Math.floor(nStart)를 적용함)
 * 리턴 : - 성공 = nStart ~ nEnd범위 중 random숫자 (단, nStart, nEnd도 포함됨)
 * 주의사항 :  nStart, nEnd는 정수임에 주의
 *****************************************************************************************/

function gfn_Random(nStart, nEnd)

{

    var range_unit, rand, tmp;

 

    nStart = Math.floor(nStart);

    nEnd = Math.floor(nEnd);

    if( nStart > nEnd )

    {

        tmp = nStart;

        nStart = nEnd;

        nEnd = tmp;

    }

    range_unit = nEnd-nStart+1;

    rand = Math.random();

    rand = Math.random();

    

    return Math.floor(rand*range_unit)+nStart;

}

 

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > Number' 카테고리의 다른 글

Nexacro.Number - format 처리  (0) 2017.01.28
Nexacro.Number - 숫자 검증  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.Number -  format 처리 ]

 

 

/*==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * Group : 2. format 지정

 **=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

 


/******************************************************************************************
 * 기능 : 3자리마다 콤마(,)를 찍어 준다. (화폐 표현)
 * 인자 : obj   : 화폐 단위로 전환하고자 하는 수치
 * 리턴 : 화폐 단위로 전환된 수치
 * 예문 : currencyFormat("7777777");
 *****************************************************************************************/

function gfn_CurrencyFormat(obj, type) {

    if(gfn_IsNull(obj)) return;

 

    var txtNumber = "";

 

    if(obj == '[object]') {

        txtNumber = String(obj.value);

    } else {

        txtNumber = String(obj);

    }

 

    if(!gfn_IsNull(type)) {

        var idxVal = txtNumber.indexOf(".");

        var chkVal = txtNumber.length - idxVal;

        

        if(type == "F") {

            if(idxVal == -1) {

                txtNumber = txtNumber + ".00";

            } else if(chkVal == 2) {

                txtNumber = txtNumber + "0";

            }

        } else {

            var digit = Number(type);

            var suffix1 = ".";

            var suffix2 = "";

            

            if(digit != 0) {

                if(idxVal == -1) {

                    for(var i=0; i<digit; i++) {

                        suffix1 += "0";

                    }

                    txtNumber = txtNumber + suffix1;

                } else if(chkVal >= 2) {

                    for(var j=0; j<digit-chkVal+1; j++) {

                        suffix2 += "0";

                    }

                    txtNumber = txtNumber + suffix2;

                }

            }

        }

    }

 

    var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');

    var arrNumber = txtNumber.split('.');

    var result = "";

    arrNumber[0] += '.';

 

    do {

        arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');

    } while (rxSplit.test(arrNumber[0]));

 

    if(arrNumber.length > 1) {

        result = arrNumber.join('');

    } else {

        result = arrNumber[0].split('.')[0];

    }

 

    if(result.substring(0, 1) == ".") result = "0" + result;

    if(obj == '[object]') {

        obj.value = result;

    }

 

    return result;

}

 

/*******************************************************************************
 ★ 설명
    숫자에 ","를 집어넣기
 ★ Parameter
    1. sNum   : 숫자( 예 : -1234567.89 )
 ★ return
    - 성공 = ","가 들어간 문자열 ( 예 : -1,234,567.89 )
    - 실패 = ""
 ******************************************************************************/

function fn_SetComma(sNum)

{

 var ppos, sDigit, nEnd, nStart=0, sRet="";

 

 if( fn_IsNull(sNum) ) return "";

 

 if( sNum.charAt(0) == "+" || sNum.charAt(0) == "-" )

 {

  sRet += sNum.charAt(0);

  nStart = 1;

 }

 ppos = Pos(sNum, ".", nStart);

 if( ppos < 0 )

  nEnd = sNum.length;

 else

  nEnd = ppos;

 sDigit = sNum.substr(nStart, nEnd-nStart);

 for( pos = 0 ; pos < sDigit.length ; pos ++ )

 {

  if( pos != 0 && (sDigit.length-pos)%3 == 0 )

   sRet += ",";

  sRet += sDigit.charAt(pos);

 }

 sRet += sNum.substr(nEnd);

 

 return sRet;

}


/*******************************************************************************
 ★ 설명
    정수인 nStart ~ nEnd의 범위에 있는 숫자에 대하여 random값을 return한다.
 ★ Parameter
    1. nStart : 시작숫자 ( 단, 정수, 만일 정수가 아니면 Math.floor(nStart)를 적용함)
    2. nEnd   : 끝숫자 ( 단, 정수, 만일 정수가 아니면 Math.floor(nStart)를 적용함)
 ★ return
    - 성공 = nStart ~ nEnd범위 중 random숫자 (단, nStart, nEnd도 포함됨)
    - 실패 = -1
 ★ 목적
    1. Math.random()이 0 ~ 1사이만 나와서 불편해서 만들었음
    2. Math.random()은 처음에 0.5근처만 나와서 만들었음
 ★ 주의사항
    nStart, nEnd는 정수임에 주의
 ******************************************************************************/

function fn_Rand(nStart, nEnd)

{

 var range_unit, rand, tmp;

 

 if( fn_IsNull(nStart) || fn_IsNull(nEnd) ) return -1;

 

 nStart = Math.floor(nStart);

 nEnd = Math.floor(nEnd);

 if( nStart > nEnd )

 {

  tmp = nStart;

  nStart = nEnd;

  nEnd = tmp;

 }

 range_unit = nEnd-nStart+1;

 

 var dt = new Date();

 rand = (dt.getMilliseconds()+(Math.random()*2000))/3000;

 

 return Math.floor(rand*range_unit*2)%range_unit+nStart;

}

 

/*******************************************************************************
 ★ 설명
    Degree를 Radian으로 변환
 ★ parameter
    1. nDegree : Degree값(예: 180, 90,...)
 ★ return
    1. 성공 = Radian(예:Math.PI, Math.PI/2,...)
    2. 실패 = NaN
******************************************************************************/

function fn_Deg2Rad(nDegree)

{

 return (Math.PI/180)*nDegree;

}

 

/*******************************************************************************
 ★ 설명
    Radian을 Degree로 변환
 ★ parameter
    1. nRadian : Radian값(예:Math.PI, Math.PI/2,...)
 ★ return
    1. 성공 = Degree(예: 180, 90,...)
    2. 실패 = NaN
******************************************************************************/

function fn_Rad2Deg(nRadian)

{

 return (180/Math.PI)*nRadian;

}

 

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > Number' 카테고리의 다른 글

Nexacro.Number - 기타  (0) 2017.01.28
Nexacro.Number - 숫자 검증  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.Number -  숫자 검증 ]

 

/*==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * Group : 1. 숫자 검증
 * Group : 2. format 지정

 * Group : 9. 기타
 **=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

 

/*==+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * Group : 1. 숫자 검증
 **=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


/******************************************************************************************
 * 기능 : 문자열이 숫자형식에 맞는지 여부 체크
 * 인자 : sNumber - 체크할 문자열숫자 ( 예 : "-1234.56" )
                   (단, ","가 들어있으면 안 됨)
 * 리턴 : - 성공 = 숫자형식에 맞는경우 true
           - 실패 = 숫자형식에 맞지않는 경우 false
 * 예문 :
 *****************************************************************************************/

function gfn_IsNumber(sNumber)

{

    var c;

    var point_cnt = 0;

    var ret = true;

 

    if (gfn_IsNull(sNumber))   return false;

 

    for (var i=0; i<sNumber.length; i++)

    {

        c = sNumber.charAt(i);

        if ( i == 0 && ( c == "+" || c == "-" ) );

        else if ( c >= "0" && c <= "9" );

        else if ( c == "." ) {

            point_cnt++;

            if( point_cnt > 1 ) {

                ret = false;

                break;

            }

        } else {

            ret = false;

            break;

        }

    }

 

    return ret;

}

 

☞  

 

☞  

 
 
 
 

  

 

'Nexacro-Function > Number' 카테고리의 다른 글

Nexacro.Number - 기타  (0) 2017.01.28
Nexacro.Number - format 처리  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.String -  etc ]

 


정의 : 한글2byte로 인식한 문자수 구하기

function gfn_bpLength2(str)
{
  var len = str.length;
  var han = 0;
  var res = 0;

  for(i=0;i<len;i++) {
    var a=str.charCodeAt(i);
    if(a>128)
    han++;
  }
  res = (len-han) + (han*2);
  
  return res;
}



/******************************************************************************************
 * 기능 : 문자열의 오른쪽부분을 지정한 길이만큼 Return 한다.
 * 인자 : strString (오른부분을 얻어올 원본 문자열)
 *         nSize (얻어올 크기. [Default Value = 0])
 * 리턴 : String/오른쪽 부분이 얻어진 문자열.
 * 예문 :
 *****************************************************************************************/

function gfn_Right(strString, nSize)

{

    var nStart = String(strString).length;

    var nEnd   = Number(nStart) - Number(nSize);

    var rtnVal = strString.substring(nStart, nEnd);

 

    return rtnVal;

}

 

/******************************************************************************************
 * 기능 : 문자열의 왼쪽부분을 지정한 길이만큼 Return 한다.
 * 인자 : strString (왼쪽부분을 얻어올 원본 문자열)
 *         nSize (얻어올 크기. [Default Value = 0])
 * 리턴 : String/왼쪽 부분이 얻어진 문자열.
 * 예문 :
 *****************************************************************************************/

function gfn_Left(strString, nSize)

{

    var rtnVal = "";

    if (nSize > String(strString).length || nSize == null)

        rtnVal = strString;

    else

        rtnVal = strString.substring(0, nSize);

 

    return rtnVal;

}

 

/******************************************************************************************
 * 기능 : undefined을 ""로 리턴한다.
 * 인자 : oParam (object나 문자열)
 * 리턴 : undefined이면 ""(널 스트링)
 * 예문 :
 *****************************************************************************************/

function gfn_BlankStr(oParam)

{

    var strParam = new String(oParam);

    if(strParam.valueOf() == "undefined") {

        return "";

    }

 

    return oParam;

}

 

/******************************************************************************************
 * 기능 : 문자열 길이 반환하는 함수
 * 인자 : sValue
 * 리턴 : length
 * 예문 :
 *****************************************************************************************/

function gfn_GetLengthB(sValue)

{

    if (gfn_IsNull(sValue))    return 0;

    

    var v_ChkStr = sValue.toString();

    var v_cnt = 0;

 

    for (var i=0; i<v_ChkStr.length; i++)

    {

        if (v_ChkStr.charCodeAt(i) > 127)

        {

            v_cnt += 3;

        } else {

            v_cnt += 1;

        }

    }

 

    return v_cnt;

}

 

/******************************************************************************************
 * 기능 : 입력된 문자열의 일부분을 다른 문자열로 치환하는 함수
 * 인자 : strString 원본 문자열.
           strOld    원본 문자열에서 찾을 문자열.
           strNew    새로 바꿀 문자열.
 * 리턴 : 대체된 문자열
 * 예문 :
 *****************************************************************************************/

function gfn_Replace()

{

    var varRtnValue = null;

    var arrArgument = gfn_Replace.arguments;

 

    if (arrArgument.length < 3) {

        varRtnValue = arrArgument[0];

    } else {

        if (gfn_IsNull(arrArgument[0])) {

            return varRtnValue;

        }

        varRtnValue = arrArgument[0].toString().replace(arrArgument[1], arrArgument[2]);

    }

 

    return varRtnValue;

}

 

/******************************************************************************************
 * 기능 : 입력값 형태에 따라서 길이 또는 범위를 구하는 함수
 * 인자 : 객체, 문자열, 배열
 * 리턴 : Type에 따라 구해진 길이 또는 범위
 * 예문 :
 *****************************************************************************************/

function gfn_GetLength()

{

    var varRtnValue = 0;

    var arrArgument = gfn_GetLength.arguments;

    if (arrArgument.length < 1) { return 0; }

 

    if (!gfn_IsNull(arrArgument[0]))

        varRtnValue = arrArgument[0].toString().length;

 

    return varRtnValue;

}

 

 

/******************************************************************************************
 * 기능 : 부분 문자열이 처음 나오는 문자 위치를 반환하는 함수
 * 인자 :
 * 리턴 :
 * 예문 :
 *****************************************************************************************/

function gfn_IndexOf()

{

    var varRtnValue = null;

    var arrArgument = gfn_IndexOf.arguments;

 

    if (arrArgument.length < 2) {

        varRtnValue = -1;

    } else {

        var nOffset = 0;

        if (gfn_IsNull(arrArgument[0]) || gfn_IsNull(arrArgument[1])) {

            return varRtnValue;

        }

 

        if (!gfn_IsNull(arrArgument[2])) nOffset = parseInt(arrArgument[2]);

        varRtnValue = arrArgument[0].toString().indexOf(arrArgument[1], nOffset);

    }

 

    return varRtnValue;

}

/******************************************************************************************
 * 기능 : 지정한 인덱스에 해당하는 문자를 반환하는 함수
 * 인자 :
 * 리턴 :
 * 예문 :
 *****************************************************************************************/

function gfn_CharAt()

{

    var varRtnValue = null;

    var arrArgument = gfn_CharAt.arguments;

 

    if (arrArgument.length < 2) {

        varRtnValue = "";

    } else {

        var nIndex = parseInt(arrArgument[1]);

        varRtnValue = arrArgument[0].toString().charAt(nIndex);

    }

 

    return varRtnValue;

}

 

 

/******************************************************************************************
 * 기능 : 문자열을 지정한 형태로 Parsing 한 후 배열로 만드는 함수
 * 인자 : strString    Parsing 해야될 문자열.
          strDelimiter Parsing 할 때 분리의 기준이 되는 문자들의 문자열.
 * 리턴 : Split 처리결과의 문자열 배열
 * 예문 :
 *****************************************************************************************/

function gfn_Split()

{

    var rtnArr = new Array();

    var arrArgument = gfn_Split.arguments;

 

    if (arrArgument.length < 1) {

    } else if (arrArgument.length < 2) {

        if (!gfn_IsNull(arrArgument[0])) {

            rtnArr[0] = arrArgument[0];

        }

    } else {

        if (!gfn_IsNull(arrArgument[0])) {

            rtnArr = arrArgument[0].toString().split(arrArgument[1]);

        }

    }

 

    return rtnArr;

}

 

/******************************************************************************************
 * 기능 : 입력된 실수를 문자열 표현법으로 표현하는 함수
 * 인자 : dNumber    문자열로 출력할 실수
           nDetail    출력시 소숫점 이하의 자릿수(Default : 0)
 * 리턴 : 문자열로 바뀐 실수
 *         출력되는 실수는 정수부분에 3자리마다 ',' 가 삽입됩니다.
 * 예문 :
 *****************************************************************************************/

function gfn_NumFormat(dNumber, nDetail) {

    var rtnStr;

    if (gfn_IsNull(nDetail) != false) { nDetail = 0; }

 

    rtnStr = dNumber.toFixedLocaleString(nDetail);

 

    return rtnStr;

}

 

/******************************************************************************************
 * 기능 : "=" 좌우의 빈공백 제거된 문자열로 만드는 함수
 * 인자 : strArg    문자열
 * 리턴 : "=" 좌우의 빈공백 제거된 문자열
 * 예문 :
 *****************************************************************************************/

function gfn_StripBlank(strArg)

{

    var nChrPos;

    var strLeft;

    var strRight = strArg;

    var strChr;

    var retVal = "";

 

    while(true) {

        nChrPos = strRight.indexOf("=");

        if (nChrPos == -1) {

            retVal += strRight;

            break;

        }

 

        strLeft  = strRight.substr(0, nChrPos).trimRight();

        strRight = strRight.substr(nChrPos + 1).trimLeft();

        strChr   = strRight.charAt(0);

 

        retVal += strLeft + "=";

        if (strChr != "\"" && strChr != "'") { strChr = " "; }

 

        nChrPos = strRight.indexOf(strChr, 1);

        if (nChrPos > -1) {

            retVal  += strRight.slice(0, nChrPos + 1);

            strRight = strRight.substr(nChrPos + 1);

        } else {

            retVal  += strRight;

            strRight = "";

        }

    }

 

    return retVal;

}

 

/******************************************************************************************
 * 기능 : 입력된 문자열의 양쪽에 쌍따옴표를 붙여 반환합니다.
 * 인자 : strString 대상 문자열
 * 리턴 : String/쌍따옴표가 붙여진 문자열
 * 예문 :
 *****************************************************************************************/

function gfn_Quote()

{

    var retVal = '""';

    var arrArgument = gfn_Quote.arguments;

 

    if ((arrArgument != null) && (arrArgument.length >= 1) && (!gfn_IsNull(arrArgument[0]))) {

        retVal = wrapQuote(new String(arrArgument[0]));

    }

 

    return retVal;

}

 

/******************************************************************************************
 * 기능 : 가운데 부분의 문자열을 반환합니다.
 * 인자 : strString String  가운데 부문을 얻어올 원본 문자열.
           nIndex    Integer 얻어올 첫 글자의 Index.
           nSize     Integer 얻어올 글자수. [Default length(해당 개채의 길이)]
 * 리턴 : String/가운데 부분이 얻어진 문자열.
 * 예문 :
 *****************************************************************************************/

function gfn_SubStr()

{

    var retVal    = "";

    var strString = "";

    var nIndex    = 0;

    var nSize     = 0;

    var arrArgument = gfn_SubStr.arguments;

 

    if (arrArgument.length >= 1) { strString = arrArgument[0]; }

    if (arrArgument.length >= 2) { nIndex    = parseInt(arrArgument[1]); }

    if (arrArgument.length >= 3) { nSize     = parseInt(arrArgument[2]); }

                            else { nSize     = gfn_GetLength(arrArgument[0]); }

 

    if (!gfn_IsNull(strString)) {

        retVal = strString.substr(nIndex, nSize);

    }

 

    return retVal;

}

 

/******************************************************************************************
 * 기능 : 문자열 더하기
 * 인자 : psLastVal - 적용할 값
          psAddVal  - 추가할 값
          psGubn    - 구분자  (없을 경우 default=콤마)
 * 리턴 : psLastVal
 * 예문 :

 *****************************************************************************************/

function gfn_Concat(psLastVal, psAddVal, psGubn){

    if (gfn_IsNull(psLastVal))

        return psAddVal

    else{

        if (gfn_IsNull(psGubn))

            return psLastVal += ',' + psAddVal;

        else

            return psLastVal += psGubn + psAddVal;

    }

}

 

 

 
 
 

 

 

Posted by 농부지기
,

[ Nexacro.String -  문자열 수 세기 ]

 

 


/*******************************************************************************
 ★ 설명
    대소문자 구별하여 문자개수 세기
 ★ Parameter
    1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
    2. sCnt   : 개수를 셀 문자열 ( 예 : "BB" )
 ★ return
    - 성공 = 문자개수 ( 예 : 1 )
    - 실패 = -1
 ******************************************************************************/

function fn_Count(sOrg, sCnt)

{

 var i, sRet="";

 var nCnt = 0;

 

 if( fn_IsNull(sOrg) || fn_IsNull(sCnt) )  return -1;

 

 for( i = 0 ; i < sOrg.length ; i += sCnt.length )

 {

  if( sOrg.substr(i, sCnt.length) == sCnt )

   nCnt++;

 }

 

 return nCnt;

}

 

/*******************************************************************************
 ★ 설명
    대소문자 구분없이 문자개수 세기
 ★ Parameter
    1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
    2. sCnt   : 개수를 셀 문자열 ( 예 : "BB" )
 ★ return
    - 성공 = 문자개수 ( 예 : 2 )
    - 실패 = -1
 ******************************************************************************/

function fn_CountCase(sOrg, sCnt)

{

 var i, sRet="";

 var nCnt = 0;

 

 if( fn_IsNull(sOrg) || fn_IsNull(sCnt) )  return -1;

 

 for( i = 0 ; i < sOrg.length ; i += sCnt.length )

 {

  if( sOrg.toLowerCase().substr(i, sCnt.length) == sCnt.toLowerCase() )

   nCnt++;

 }

  

 return nCnt;

}

/*******************************************************************************
 ★ 설명
    문자 전체 길이를 계산
      - 문자, 숫자, 특수문자 : 1 로 Count
      - 그외 한글/한자 : 2 로 count 되어 합산한다.
 ★ Parameter
    1. sVal   : 입력받은 문자열 ( 예 : "a1\n한韓" )
 ★ return
    - 성공 = 길이 ( 예 : 7 )
    - 실패 = -1
 ******************************************************************************/

function fn_LenB(sVal)

{

    var len = 0;

 

 if( fn_IsNull(sVal) )  return -1;

 

    for (i=0; i<sVal.length; i++)

    {

        if (sVal.charCodeAt(i) > 127)

            len += 2;

        else

            len += 1;

    }

 return len;

}

/******************************************************************************
  * Function명 : gf_getBytes()
  * 설명       : byte수를 반환한다.
  * Params     : String
  * Return     : byte수
  ******************************************************************************/

 function gf_getBytes(str) {

     if ( gf_isNull(str) ) return;

     

    var bytes = 0;

 

    for (var i=0, n=str.length; i < n; i++) {

         var oneChar = escape(str.charAt(i));

         if ( oneChar.length == 1 ) {

             bytes ++;

         } else if (oneChar.indexOf("%u") != -1) {

             bytes += 2;

         } else if (oneChar.indexOf("%") != -1) {

             bytes += oneChar.length/3;

         }

    }

 

    return bytes;

 }


/**
* 입력값의 바이트 길이를 리턴
* ex) if (getByteLength(form.title) > 100) {
*         alert("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다.");
*     }
* Author : Wonyoung Lee
*/

function getByteLength(input) {

    var byteLength = 0;

    for (var inx = 0; inx < input.value.length; inx++) {

        var oneChar = escape(input.value.charAt(inx));

        if ( oneChar.length == 1 ) {

            byteLength ++;

        } else if (oneChar.indexOf("%u") != -1) {

            byteLength += 2;

        } else if (oneChar.indexOf("%") != -1) {

            byteLength += oneChar.length/3;

        }

    }

    return byteLength;

}

 

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - etc  (0) 2017.01.28
Nexacro.String - 문자열 삭제.추가  (0) 2017.01.28
Nexacro.String - 문자열 치환  (0) 2017.01.28
Nexacro.String - 문자열 찾기  (0) 2017.01.28
Nexacro.String - token 추출  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.String -  문자열 삭제.추가 ]

 

 


/******************************************************************************************
 * 기능 : 대소문자 구별하여 왼쪽에서 문자열 삭제.
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "BBbbcc" )
          2. sTrim  : Trim할 문자열(옵션 : Default=" ") ( 예 : "bb" )
 * 리턴 : 성공 = Trim된 문자열 ( 예 : "bbcc" )
          실패 = ""
 * 예문 :
 *****************************************************************************************/

function fn_LTrim(sOrg, sTrim)

{

    var chk, pos;

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sTrim) )  sTrim = " ";

 

    for( pos = 0 ; pos < sOrg.length ; pos+=sTrim.length )

    {

        if( sOrg.substr( pos, sTrim.length ) != sTrim )  break;

    }

 

    return sOrg.substr(pos);

}

 

 

 

/******************************************************************************************
 * 기능 : 대소문자 구별없이 왼쪽에서 문자열 삭제
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "BBbbcc" )
           2. sTrim  : Trim할 문자열(옵션 : Default=" ")( 예 : "bb" )
 * 리턴 : 성공 = Trim된 문자열 ( 예 : "cc" )
          실패 = ""
 * 예문 :
 *****************************************************************************************/

function fn_LTrimCase(sOrg, sTrim)

{

    var pos;

    

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sTrim) )  sTrim = " ";

 

    for( pos = 0 ; pos < sOrg.length ; pos+=sTrim.length )

    {

        if( sOrg.toLowerCase().substr( pos, sTrim.length ) != sTrim.toLowerCase() )  break;

    }

 

    return sOrg.substr(pos);

}

 

/******************************************************************************************
 * 기능 : 대소문자 구별하여 오른쪽에서 문자열 삭제.
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "bbccCC" )
          2. sTrim  : Trim할 문자열(옵션 : Default=" ")( 예 : "CC" )
 * 리턴 : 성공 = Trim된 문자열 ( 예 : "bbcc" )
          실패 = ""
 * 예문 :
 *****************************************************************************************/

function fn_RTrim(sOrg, sTrim)

{

 

 var pos, nStart;

 

 

 

 

 

 if( fn_IsNull(sOrg) )  return "";

 

 if( fn_IsNull(sTrim) )  sTrim = " ";

 

  

 

 for( pos = sOrg.length-sTrim.length ; pos >= 0 ; pos -= sTrim.length )

 {

  if( sOrg.substr( pos, sTrim.length ) != sTrim )

 

   break;

 

 }

 

 return sOrg.substr(0, pos+sTrim.length);

 

}

 

/*******************************************************************************
 ★ 설명
    대소문자 구별없이 오른쪽에서 문자열 삭제.
 ★ Parameter
    1. sOrg   : 원래 문자열( 예 : "bbccCC" )
    2. sTrim  : Trim할 문자열(옵션 : Default=" ")( 예 : "CC" )
 ★ return
    - 성공 = Trim된 문자열 ( 예 : "bb" )
    - 실패 = ""
 ******************************************************************************/

 

function fn_RTrimCase(sOrg, sTrim)

 

{

 

 var pos, nStart;

 

 

 

 

 

 if( fn_IsNull(sOrg) )  return "";

 

 if( fn_IsNull(sTrim) )  sTrim = " ";

 

  

 

 for( pos = sOrg.length-sTrim.length ; pos >= 0 ; pos -= sTrim.length )

 

 {

 

  if( sOrg.toLowerCase().substr( pos, sTrim.length ) != sTrim.toLowerCase() )

 

   break;

 

 }

 

 

 

 

 

 return sOrg.substr(0, pos+sTrim.length);

 

}

 

 

 

 

 

 

 

 


/*******************************************************************************
 ★ 설명
    왼쪽에 문자열 추가.
 ★ Parameter
    1. sOrg   : 원래 문자열( 예 : "bbccCC" )
    2. sPad   : Pad할 문자열(옵션 : Default=" ")( 예 : "aa" )
    3. nCnt   : 반복횟수(옵션 : Default=1) (예 : 2)
 ★ return
    - 성공 = Pad된 문자열 ( 예 : "aaaabbccCC" )
    - 실패 = ""
 ******************************************************************************/

 

function fn_LPad(sOrg, sPad, nCnt)

 

{

 

 var i, sRet="";

 

 

 

 

 

 if( fn_IsNull(sOrg) )  return "";

 

 if( fn_IsNull(sPad) )  sPad = " ";

 

 if( fn_IsNull(nCnt) )  nCnt = 1;

 

 

 

 

 

 for( i = 0 ; i < nCnt ; i++ )

 

  sRet += sPad;

 

 sRet += sOrg;

 

 

 

 return sRet;

 

}

 

 

 

 

 

/*******************************************************************************
 ★ 설명
    오른쪽에 문자열 추가.
 ★ Parameter
    1. sOrg   : 원래 문자열( 예 : "bbccCC" )
    2. sPad   : Pad할 문자열(옵션 : Default=" ")( 예 : "aa" )
    3. nCnt   : 반복횟수(옵션 : Default=1) (예 : 2)
 ★ return
    - 성공 = Pad된 문자열 ( 예 : "bbccCCaaaa" )
    - 실패 = ""
 ******************************************************************************/

 

function fn_RPad(sOrg, sPad, nCnt)

 

{

 

 var i, sRet="";

 

 

 

 

 

 if( v(sOrg) )  return "";

 

 if( fn_IsNull(sPad) )  sPad = " ";

 

 if( fn_IsNull(nCnt) )  nCnt = 1;

 

 

 

 sRet += sOrg;

 

 for( i = 0 ; i < nCnt ; i++ )

 

  sRet += sPad;

 

 

 

 return sRet;

 

}

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - etc  (0) 2017.01.28
Nexacro.String - 문자열 수 세기  (0) 2017.01.28
Nexacro.String - 문자열 치환  (0) 2017.01.28
Nexacro.String - 문자열 찾기  (0) 2017.01.28
Nexacro.String - token 추출  (0) 2017.01.28
Posted by 농부지기
,

[ Nexacro.String -  문자열 치환 ]

 


/******************************************************************************************
 * 기능 : 문자열을 대소문자 구별하여 치환한다
 * 인자 : 1. sOrg   : 원래문자열 (예 : "aaBBbbccBB" )
          2. sRepFrom : 치환할 문자열 ( 예 : "BB" )
          3. sRepTo : 치환될 문자열 ( 예 : "xx" )
 * 리턴 : 성공 = 치환된 문자열 ( 예 : "aaxxbbccxx" )
          실패 = sOrg
 * 예문 :
 *****************************************************************************************/

function fn_Replace( sOrg, sRepFrom, sRepTo )

{

    var pos, nStart=0, sRet="";

 

    if( fn_IsNull(sOrg) )      return "";

    if( fn_IsNull(sRepFrom) )  return sOrg;

    if( fn_IsNull(sRepTo) )    return sOrg;

 

    while(1)

    {

        pos = Pos( sOrg, sRepFrom, nStart );

        if( pos < 0 ){

            sRet += sOrg.substr( nStart );

            break;

        }else{

            sRet += sOrg.substr( nStart, pos - nStart);

            sRet += sRepTo;

            nStart = pos+sRepFrom.length;

        }

    }

    return sRet;

}

 

/******************************************************************************************
 * 기능 : 문자열을 대소문자 구별없이 치환한다
 * 인자 : 1. sOrg   : 원래문자열 (예 : "aaBBbbccBB" )
          2. sRepFrom : 치환할 문자열 ( 예 : "BB" )
          3. sRepTo : 치환될 문자열 ( 예 : "xx" )
 * 리턴 : 성공 = 치환된 문자열 ( 예 : "aaxxxxccxx" )
          실패 = sOrg
 * 예문 :
 *****************************************************************************************/

function fn_ReplaceCase( sOrg, sRepFrom, sRepTo )

{

    var pos, nStart=0, sRet="";

 

    if( fn_IsNull(sOrg) )   return "";

    if( fn_IsNull(sRepFrom) )  return sOrg;

    if( fn_IsNull(sRepTo) )  return sOrg;

 

    while(1)

    {

        pos = PosCase( sOrg, sRepFrom, nStart );

        if( pos < 0 ) {

            sRet += sOrg.substr( nStart );

            break;

        }else{

            sRet += sOrg.substr( nStart, pos - nStart);

            sRet += sRepTo;

            nStart = pos+sRepFrom.length;

        }

    }

    return sRet;

}

 

☞  

 

☞  

 
 
 
 

  

'Nexacro-Function > String' 카테고리의 다른 글

Nexacro.String - 문자열 수 세기  (0) 2017.01.28
Nexacro.String - 문자열 삭제.추가  (0) 2017.01.28
Nexacro.String - 문자열 찾기  (0) 2017.01.28
Nexacro.String - token 추출  (0) 2017.01.28
Nexacro.String - padding  (0) 2017.01.28
Posted by 농부지기
,