C# 문자열

정용·2024년 4월 15일
post-thumbnail

C# 문자열

문자열(string)은 프로그램에서 가장 많이 쓰이는 데이터 타입 중 하나다.
C#에서 문자열은 이중부호를 사용하여 표현이 되고, 단일 문자(char)는 단일부호를 사용해 표현이 된다.
.
.

C#의 키워드 string은 .NET System.String 클래스와 동일하다.
따라서 System.String 클래스의 모든 메소드와 속성을 사용할 수 있다.
예를 들어, 일정 문자열 부분만 뽑아내는 Substring() 메소드, 문자열 길이를 구하는 Length 속성 등을 모두 사용할 수 있다.
.
.

C# 문자열은 Immutable 즉 한 번 문자열이 설정되면, 다시 변경할 수 없다.

  • 한번 값이 설정되면 다시 변경할 수 없는 타입을 Immutable Type이라 부른다.
  • 값을 계속 변경할 수 있는 것을 Mutable Type이라 부른다.

예를 들어, 문자열 변수 A가 있을 때, A = "C#"; 이라고 한 후 다시 A = "D#"; 이라고 실행하면 .NET 시스템은 새로운 string 객체를 생성해 "D#" 이라는 데이터로 초기화 한 후 이것을 변수명 A에 할당한다.
즉, 변수 A는 내부적으로는 전혀 다른 메모리 갖는 객체를 가리키는 것이다.
예제를 보며 살펴보겠따.

using System;

namespace Project
{
	class Program
    {	
    	static void Main(string[] args) 
        {
        	// 문자열 string 변수 !
            string s1 = "C#";
            stirng 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의 집합체다. 문자열 안에 있는 각 문자를 엑세스하고 싶으면, 인덱스 [ ]를 사용하여 문자 요소를 엑세스한다.

예를 들어보면, 문자열 A가 "Hello" 값을 가지고 있을 때 A[0]이라고 하면 첫번째 문자 H, A[1]이라고 하면 두번째 문자 e를 반환한다. 문자열을 문자배열처럼 취급하는 것으로 일반 C# 배열과 마찬가지 첫번째 요소는 [0]으로 엑세스한다.

문자배열을 문자열 string으로 변환하기 위해서는 new string을 사용해야 한다.
.
.

문자 하나는 상응하는 다들 많이 들어본 아스키코드 값을 가지는데, 예를 들어 A는 65, B는 66, Z는 90을 갖는다.
소문자는 a가 97, b가98 등등 있디.
하나의 문자는 이처럼 숫자값으로 표현되므로 문자에 숫자를 더하거나 빼면 다른 문자로 표현될 수 있다.
예를 들어 문자A를 갖는 변수에 1을 더하면 66이 되어 문자 B가 된다.
예제를 보면서 마무리하겠다.

using System;

namespace Project
{
	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[1]); 
            }
            
            //문자열을 문자 배열로 변환
            string str = "Hello";
            char[] charArray = str.ToCharArray();
            
            for (int i = 0; < charArray.Length, i++)
            {
            	Console.WriteLine(charArray[i];
            }
            
            //문자배열을 문자열로 변환
            char[] cahrArray = { 'a', 'b', 'c', 'd' };
            s = new string(charArray2);
            
            Console.WrtieLine(s);
            
            //문자 연산
            char c1 = 'A';
            char c2 = (char)(c1+3);
            Console.WtrieLine(c2);   
        } 
    }     
}            
profile
예예

0개의 댓글