04 문자열

vencott·2021년 6월 2일
0

C#

목록 보기
4/32

문자열(string)

문자열(string)은 "이중부호", 단일문자(char)는 '단일부호'를 사용해 표현

C# 자체 키워드 string은 .NET의 System.String과 동일하므로 Substring() 메서드, Length 속성 등 System.String 클래스의 모든 메서드와 속성을 사용할 수 있다

C#에서 문자열은 Immutable하므로 한번 문자열이 설정되면 다시 변경할 수 없다

변수에 새로운 문자열을 할당하면 .NET 시스템은 새로운 string 객체를 생성하여 변수에 할당되고 기존 변수는 내부적으로 전혀 다른 메모리를 가리키게 된다

using System;

namespace MySystem
{
   class Program
   {
      static void Main(string[] args)
      {         
         // 문자열(string) 변수
         string s1 = "C#";
         string s2 = "Programming";

         // 문자(char) 변수 
         char c1 = 'A';
         char c2 = 'B';

         // 문자열 결합
         string s3 = s1 + " " + s2;
         Console.WriteLine("String: {0}", s3);

         // 부분문자열 발췌
         string s3substring = s3.Substring(1, 5);
         Console.WriteLine("Substring: {0}", s3substring);
      }
   }
}

문자열, 문자, 문자배열

문자열(string)은 문자(char)의 집합체

문자열 안에 있는 각 문자에 접근할 때 배열과 같이 [ ]를 사용하여 접근

문자배열(char array)을 문자열(string)으로 변환하기 위해서는 new 키워드를 사용한다

using System;

namespace MySystem
{
   class Program
   {
      static void Main(string[] args)
      {         
         string s = "C# Studies";

         // 문자열을 배열인덱스로 한문자 엑세스 
         for (int i = 0; i < s.Length; i++)
         {
            Console.WriteLine("{0}: {1}", i, s[i]);
         }

         // 문자열을 문자배열로 변환
         string str = "Hello";
         char[] charArray = str.ToCharArray();

         for (int i = 0; i < charArray.Length; i++)
         {
            Console.WriteLine(charArray[i]);
         }

         // 문자배열을 문자열로 변환
         char[] charArray2 = { 'A', 'B', 'C', 'D' };
         s = new string(charArray2); // ABCD

         Console.WriteLine(s);

         // 문자 연산
         char c1 = 'A';
         char c2 = (char)(c1 + 3);
         Console.WriteLine(c2);  // D
      }
   }
}

StringBuilder

System.Text.Stringbuilder

Immutable 타입인 String 클래스와 다르게 Mutable 타입

문자열 갱신이 많은 경우 유용

별도 메모리를 생성, 소멸하지 않고 일정한 버퍼를 가지고 문자열 갱신을 효율적으로 처리

using System;
using System.Text;

namespace MySystem
{
   class Program
   {
      static void Main(string[] args)
      {                  
         StringBuilder sb = new StringBuilder();
         for (int i = 1; i <= 26; i++)
         {
            sb.Append(i.ToString());
            sb.Append(System.Environment.NewLine);
         }
         string s = sb.ToString();

         Console.WriteLine(s);
      }
   }
}

출처: http://www.csharpstudy.com/

profile
Backend Developer

0개의 댓글