[ Nexacro.String -  문자열 찾기 ]


 


/******************************************************************************************
 * 기능 : 문자열의 위치를 대소문자 구별하여 찾는다
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
          2. sFind  : 찾고자 하는 문자열( 예 : "bb" )
          3. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : 성공 = 찾고자 하는 문자열의 시작위치 ( 예 : 4 )
          실패 = -1
 * 예문 :
 *****************************************************************************************/

function fn_Pos(sOrg, sFind, nStart)

{

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

 

    if( fn_IsNull(nStart) ) nStart = 0;

 

    return sOrg.indexOf(sFind, nStart);

}

 

/******************************************************************************************
 * 기능 : 문자열의 위치를 대소문자 구별없이 찾는다
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
          2. sFind  : 찾고자 하는 문자열( 예 : "bb" )
          3. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )   
 * 리턴 : 성공 = 찾고자 하는 문자열의 시작위치 ( 예 : 2 )
          실패 = -1
 * 예문 :
 *****************************************************************************************/
 

function fn_PosCase(sOrg, sFind, nStart)

{

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

    if( fn_IsNull(nStart) )  nStart = 0;

 

    return sOrg.toLowerCase().indexOf(sFind.toLowerCase(), nStart);

}

 

 

    {

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

    }

    return pos;

}

 

/******************************************************************************************
 * 기능 : 문자열의 위치를 대소문자 구별없이 거꾸로 찾는다
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbcc" )
          2. sFind  : 찾고자 하는 문자열( 예 : "BB" )
          3. nStart : 검색 시작위치 (옵션 : Default=문자열의 끝 ) ( 예 : 6 )
 * 리턴 : 성공 = 찾고자 하는 문자열의 시작위치 ( 예 : 4 )
          실패 = -1
 * 예문 :
 *****************************************************************************************/

function fn_PosReverseCase(sOrg, sFind, nStart)

{

    var pos;

 

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

    if( fn_IsNull(nStart) )  nStart = sOrg.length-1;

 

    for( pos = nStart ; pos >= 0 ; pos-- )

    {

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

    }

 

    return pos;

}

 

/******************************************************************************************
 * 기능 : 시작글자와 끝글자에 해당하는 글자의 사이에 있는 가운데 글자를
          대소문자를 구별하여 찾는다.
          ( 예 : aaBBbbccdd에서 bb, dd사이의 글자 cc를 찾는다 )
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                     (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                     (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : 성공 = 가운데 글자 ( 예 : "cc" )
          실패 = ""
 * 예문 :
 *****************************************************************************************/

function fn_Mid(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else{

        pos_start = Pos(sOrg, sStart, nStart);

        if( pos_start < 0 ) return "";

    }

 

    if( sEnd == "" )

        pos_end = sOrg.length;

    else{

        pos_end = Pos(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return "";

    }

 

    return sOrg.substring(pos_start+sStart.length, pos_end);

}

 

/******************************************************************************************
 * 기능 : 시작글자와 끝글자에 해당하는 글자의 사이에 있는 가운데 글자를
          대소문자 구별없이 찾는다.
          ( 예 : aaBBbbccdd에서 bb, dd사이의 글자 bbcc를 찾는다 )
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                     (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                     (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : 성공 = 가운데 글자 ( 예 : "bbcc" )
          실패 = ""
 * 예문 :
 *****************************************************************************************/

function fn_MidCase(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else{

        pos_start = PosCase(sOrg, sStart, nStart);

        if( pos_start < 0 ) return "";

    }

 

    if( sEnd == "" )

        pos_end = sOrg.length;

    else {

        pos_end = PosCase(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return "";

    }

    return sOrg.substring(pos_start+sStart.length, pos_end);

}

 

 /******************************************************************************************
 * 기능 : Mid()함수와 동일하나 Return을 Array로 한다.
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                     (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                     (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )     
 * 리턴 : - 성공
              Array[0] = 가운데 글자 ( 예 : "cc" )
              Array[1] = sStart의 위치 ( 예 : 4 )
              Array[2] = sEnd의 위치 ( 예 : 8 )
          - 실패
              Array[0] = ""
              Array[1] = -1
              Array[2] = -1
 * 예문 :
 * 참고 : sStart, sEnd의 위치를 알아내려면 다시한번 찾아야 하므로 속도 때문에 만듬
 *****************************************************************************************/

function fn_AMid(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

    var arr = new Array("",-1,-1);

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else{

        pos_start = Pos(sOrg, sStart, nStart);

        if( pos_start < 0 ) return arr;

    }

    if( sEnd == "" )

        pos_end = sOrg.length;

    else {

        pos_end = Pos(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return arr;

    }

 

    arr[0] = sOrg.substring(pos_start+sStart.length, pos_end);

    arr[1] = pos_start;

    arr[2] = pos_end;

    

    return arr;

}

 

/******************************************************************************************
 * 기능 : MidCase()함수와 동일하나 Return을 Array로 한다.
 * 인자 : 1. sOrg   : 원래 문자열( 예 : "aaBBbbccdd" )
          2. sStart : 찾고자 하는 시작 문자열(옵션 : Default = "")(예 : "bb" )
                    (만일, sStart=""이면 nStart부터 sEnd까지의 모든 문자열이 return된다.)
          3. sEnd   : 찾고자 하는 끝 문자열 (옵션 : Default = "")( 예 : "dd" )
                    (만일, sEnd=""이면 sStart부터 문자열의 끝까지의 모든 문자열이 return된다.)
          4. nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
 * 리턴 : - 성공
              Array[0] = 가운데 글자 ( 예 : "bbcc" )
              Array[1] = sStart의 위치 ( 예 : 2 )
              Array[2] = sEnd의 위치 ( 예 : 8 )
          - 실패
              Array[0] = ""
              Array[1] = -1
              Array[2] = -1
 * 예문 :
 * 참고 : sStart, sEnd의 위치를 알아내려면 다시한번 찾아야 하므로 속도 때문에 만듬
 *****************************************************************************************/

function fn_AMidCase(sOrg, sStart, sEnd, nStart)

{

    var pos_start, pos_end, ret_str;

    var arr = new Array("",-1,-1);

 

    if( fn_IsNull(sOrg) )  return "";

    if( fn_IsNull(sStart) ) sStart = "";

    if( fn_IsNull(sEnd) )  sEnd = "";

    if( fn_IsNull(nStart) ) nStart = 0;

 

    if( sStart == "" )

        pos_start = nStart;

    else {

        pos_start = PosCase(sOrg, sStart, nStart);

        if( pos_start < 0 ) return arr;

    }

 

    if( sEnd == "" )

        pos_end = sOrg.length;

    else{

        pos_end = PosCase(sOrg, sEnd, pos_start+sStart.length, nStart);

        if( pos_end < 0 ) return arr;

    }

 

    arr[0] = sOrg.substring(pos_start+sStart.length, pos_end);

    arr[1] = pos_start;

    arr[2] = pos_end;

    

    return arr;

}

 

 

☞  

 

☞  

 
 
 
 

  

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

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
Nexacro.String - Trim  (0) 2017.01.28
Posted by 농부지기
,