비주얼 베이직에서 편하게 썼던 문자열 처리 함수가 Mid를 비롯한 Left와 Right입니다.

Mid : 문자열에서 지정된 인덱스에서 부터 지정된 갯수만큼 문자열 반환
Left : 왼쪽서 부터 지정된 갯수만큼 문자열 반환
Right : 오른쪽에서 부터 지정된 갯수만큼 무자열 반환

C#에는 Mid역활을 하는 Substring가 있는데 이것을 이용하여 Left와 Right를 구현할수 있습니다.
물론 예외처리를 위해 Mid도 구현하면 좋죠 ㅎㅎㅎ

그 방법 외에도 VB를 참조하여 직접 Mid, Left, Right를 가저와 사용할수도 있습니다.

참고로 Mid의 시작위치는 1부터 시작합니다.(0부터 시작하면 에러가 남)
그러니 인덱스 방식으로 사용하려면 Mid함수는 조금 수정이 필요하죠.

1.VB 참조하기

Microsoft.VisualBasic를 참조 추가한후  
using Microsoft.VisualBasic;
합니다.

그 이후 Strings의 메소드로 Mid, Left, Right를 사용할수 있습니다.


사용은 아래와 같이 하면 됩니다.
string sTemp = "웹에서 샘플보여줄뗀 실버라이트가 짱이쥐!";
string[] sRetrun = new string[3];
sRetrun[0] = Strings.Mid(sTemp, 3, 5 );
sRetrun[1] = Strings.Left(sTemp, 7);
sRetrun[2] = Strings.Right(sTemp, 6);


2.사용자 함수 만들기
string.Substring 를 이용하여 Mid, Left, Right를 구현 할수 있습니다.

VB참조방식은 배포시 VB용 DLL이 딸려간다는 단점이 있죠.
(이 DLL이 좀 무겁습니다-_-;;)
그리고 속도 느리기 때문에 문자열만 사용하려고 VB참조하는건 그다지 좋은 생각이 아닙니다.


//Mid
    /// <summary>
    /// 문자열 원본의 지정한 위치에서 부터 추출할 갯수 만큼 문자열을 가져옵니다.
    /// </summary>
    /// <param name="sString">문자열 원본</param>
    /// <param name="nStart">추출을 시작할 위치</param>
    /// <param name="nLength">추출할 갯수</param>
    /// <returns>추출된 문자열</returns>
    public string Mid(string sString, int nStart, int nLength)
    {
        string sReturn;
            
        //VB에서 문자열의 시작은 0이 아니므로 같은 처리를 하려면 
        //스타트 위치를 인덱스로 바꿔야 하므로 -1을 하여
        //1부터 시작하면 0부터 시작하도록 변경하여 준다.
        --nStart;

        //시작위치가 데이터의 범위를 안넘겼는지?
        if (nStart <= sString.Length)
        {
            //안넘겼다.

            //필요한 부분이 데이터를 넘겼는지?
            if ((nStart + nLength) <= sString.Length)
            {
                //안넘겼다.
                sReturn = sString.Substring(nStart, nLength);
            }
            else
            {
                //넘겼다.
                    
                //데이터 끝까지 출력
                sReturn = sString.Substring(nStart);
            }

        }
        else
        {
            //넘겼다.

            //그렇다는 것은 데이터가 없음을 의미한다.
            sReturn = string.Empty;
        }

        return sReturn;
    }



//Left
    /// <summary>
    /// 문자열 원본에서 왼쪽에서 부터 추출한 갯수만큼 문자열을 가져옵니다.
    /// </summary>
    /// <param name="sString">문자열 원본</param>
    /// <param name="nLength">추출할 갯수</param>
    /// <returns>추출된 문자열</returns>
    public string Left(string sString, int nLength)
    {
        string sReturn;
            
        //추출할 갯수가 문자열 길이보다 긴지?
        if ( nLength > sString.Length )
        {
            //길다!

            //길다면 원본의 길이만큼 리턴해 준다.
            nLength = sString.Length;
        }

        //문자열 추출
        sReturn = sString.Substring(0, nLength);

        return sReturn;
    }

 

//Right
    /// <summary>
    /// 문자열 원본에서 오른쪽에서 부터 추출한 갯수만큼 문자열을 가져옵니다.
    /// </summary>
    /// <param name="sString">문자열 원본</param>
    /// <param name="nLength">추출할 갯수</param>
    /// <returns>추출된 문자열</returns>
    public string Right(string sString, int nLength)
    {
        string sReturn;

        //추출할 갯수가 문자열 길이보다 긴지?
        if (nLength > sString.Length)
        {
            //길다!

            //길다면 원본의 길이만큼 리턴해 준다.
            nLength = sString.Length;
        }

        //문자열 추출
        sReturn = sString.Substring(sString.Length - nLength,nLength);

        return sReturn;
    }


3.샘플 테스트 및 소스코드
테스트는 아래서 해주시면 되겠습니다.







  1. Favicon of http://ash84.tistory.com BlogIcon ash84 2011.12.26 14:50 신고  Address  Edit/Delete  Reply

    잘 보고 갑니다^^

댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바