SSISO Community

갤러리정

문자열처리 - CSharp

문자열
- 모든 문자열은 System.String로부터 상속
- 닷넷에서 string객체는 한번 인스턴스화가 되면 불편 -> StringBuilder사용

 

string선언
- 다른 참조형과 다르게 new연산자 이용X
- 모든 string형은 유니코드

 

문자열 길이
- 객체명.Length
- 읽기전용

 

문자열의 각 요소 접근하기
- 인덱서(indexer) :  문자열을 배열처럼 취급
- 읽기 전용

 

문자열의 추가
- Insert : 지정위치에 문자열추가
- Concat. + : 문자열합치기
- 자기자신에게 영향X

 

대소문자 변환
- ToLower : 소문자로 치환
- ToUpper : 대문자로 치환

 

공백 문자열 지우기
- Trim, TrimStart, TrimEnd
- 공백삭제

 

문자열치환
- Replace
- 문자열 내에 원하는 문자열을 바꾸고자 하는 문자열로 치환

 

문자열 검색, 추출
- IndexOf, LastIndexOf : 문자열 검색,  찾고자하는 문자열의 첫번째 글자 위치값 리턴 (0부터시작)
- Substring : 문자열추출

 

문자열 포맷지정
- Console.WriteLine()에서 사용한 양식 문자열과 동일
- String.Format();

 

문자열 분할
- Split
- 구분자를 중심으로 문자열을 분할, 배열 형태로 반환

 

Equals
- 두문자열이 같은지 비교

 

지정문자열 삭제
- Remove

 

        public static void stringMethod()
        {

            //문자열 비교
            string str1="ABC";
            string str2="ABC";

            if(str1.Equals(str2))
                Console.WriteLine("동일");
            else
                Console.WriteLine("다름");

 

            //문자열삭제
            string str3 = "나는 문자열입니다.";
            Console.WriteLine(str3.Remove(3,4));    //3위체에서부터 4개 삭제


            //양식문자열
            str = String.Format("{0,10}","ABC");    //콘솔이 아닌 웹등에서 사용용이, 사용법은 WriteLine과 같음.
            Console.WriteLine(str);                 //콘솔에서는 WriteLine 사용
            Console.WriteLine(String.Format("{0:f2}",1520));


            //문자열 일정문자단위로 분리
            string csv = "강남길, 최지우, 김희선,하늘이";
            string[] result;

            result = csv.Split(',');
            for(int i=0; i<result.Length;i++)
                Console.WriteLine(result[i].Trim());


            //문자열길이, 복제. 비교
            str = "가나다라마바사";
            Console.WriteLine("문자열 : {0}", str);
            Console.WriteLine("문자열 길이 : {0}", str.Length);
            Console.WriteLine("문자열 복제 : {0}", str.Clone());
            Console.WriteLine("문자열 비교 : {0}", str.Equals("ABCDE"));

 

            //Indexer
            char firstChar = str[0];
            Console.WriteLine("첫문자 : {0}", firstChar);       // 결과 : 가

 

            //문자열 추가
            str2="추가문자열";
            str = str.Insert(0, str2);  //0번째 위치에 str2문자열 추가
            Console.WriteLine(str);

 

            //문자열 합침
            str2 = String.Concat("가","마","사");
            Console.WriteLine(str2);
            str2 = String.Concat(str,"마","사");
            Console.WriteLine(str2);
            str2 = str2 + str;
            Console.WriteLine(str2);

 

            //대소문자 변환
            str = "Hi~ Hong~";
            Console.WriteLine(str.ToUpper());
            Console.WriteLine(str.ToLower());
            Console.WriteLine(str);

 

            //문자열 좌/우 공백제거
            str = " 잘 살아 보세   ";
            Console.WriteLine(">" + str.TrimStart() + "<") ;
            Console.WriteLine(">" + str.TrimEnd() + "<");
            Console.WriteLine(">" + str.Trim() + "<");
            Console.WriteLine(">" + str.TrimStart().TrimEnd() + "<");

 

            //문자열 치환
            str = "Hello~";
            Console.WriteLine(str);
            Console.WriteLine(str.Replace("~", "..."));

 

            //문자열 검색, 0부터 시작. 해당하는 문자열의 첫번째 위치값 리턴
            Console.WriteLine(str.IndexOf("녕하"));

            str = "I Love You~";


            //문자열 추출
            Console.WriteLine(str.Substring(2));    //2번째위치부터 끝까지
            Console.WriteLine(str.Substring(2,4));

        }

ToCharArray
- 문자열을 Char형의 배열 형식으로 반환합니다

 

        public static void ToCharArray_Test()
        {
            string str = "012wxyz789";

            char[] arr;

            arr = str.ToCharArray(3, 6);    //3번째 위치에서 6개의 글자를 추출해 배열방에 각각 넣는다.
            Console.Write("The letters in '{0}' are: '", str);
            Console.Write(arr);             //배열방 출력시 해당내용 출력

            for(int i=0;i<arr.Length;i++)   //각각의 배열방에도 들어가 있음.
                Console.WriteLine(arr[i]);

            Console.WriteLine("'");

 

            char[] array;
            array = str.ToCharArray();      //인자를 써주지 않으면 모든 문자 배열에 집어넣음
            Console.WriteLine("Each letter in '{0}' is:", str);
            Console.WriteLine(array);

            foreach (char c in arr)
                Console.WriteLine(c);
        }


System.Text.StringBulider
- 닷넷에서 String클래스를 이용한 문자열 처리는 비효율적
- 대형 문자열이나 잦은 문자열 변경시
- 대부분의 문자열 관련 함수들이 String 인스턴스를 새로 생성시켜 반환

 

    StringBulider sb = new StringBulider("ABC");

 

 - StringBuilder.Capacity : 객체내에 문자열 버퍼 크기
 - StringBuilder.Length : 문자열 길이

 

        public static void StringBuilderTest()
        {
            StringBuilder sb = new StringBuilder("I am a Boy", 18);
            //가용량을 적어주지 않으면 기본 용량은 16이고, 기본 최대 용량은 Int32.MaxValue

            Console.WriteLine(sb.ToString());
            Console.WriteLine(sb.Length);
            Console.WriteLine(sb.Capacity);
            Console.WriteLine(sb.MaxCapacity);

            Console.WriteLine(sb.Insert(0,"삽입"));

            Console.WriteLine(sb.Remove(0,2));

            Console.WriteLine(sb.Append("추가문자열"));
            Console.WriteLine(sb.Append(5000));
            Console.WriteLine(sb.AppendFormat("{0,10}","end"));

            Console.WriteLine(sb[0]);
            sb[0] = 'i';
            Console.WriteLine(sb[0]);

            Console.WriteLine(sb.ToString().Replace(" ",""));
            Console.WriteLine(sb.ToString().IndexOf("Boy"));

        }

1364 view

4.0 stars