문자열(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
}
}
}
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);
}
}
}