문자열(string)은 프로그램에서 가장 많이 쓰이는 데이타 타입중이 하나이다. C#의 키워드 string은 .NET의 System.String 클래스와 동일하며, String클래스의 모든 메서드, 프로퍼티를 사용한다. 예를 들어 일정 문자열 부분만 뽑아내는 .Substring()메서드, 문자열 길이를 구하는 .Length 프로퍼티 등등을 사용할 수 있다. C# 문자열은 Immutable 즉 한번 문자열이 설정되면, 다시 변경할 수 없다. 예를 들어, s="C#" 이라고 한 후 다시 s="F#"이라고 실행하면, .NET 시스템은 기존의 문자열 클래스에서 새로운 객체를 생성하여 "F#"이라는 데이타로 초기화 한 후 이를 변수명 s1에 할당한다. 즉, 내부적으로는 전혀 다른 메모리를 갖는 객체를 가리키는 것이다.
namespace MySystem
{
class Program
{
static void Main(string[] args)
{
string s1 = "C#";
string s2 = "Programming";
string s3 = s1 + " " + s2;
Console.WriteLine("String: {0}", s3);
string s3substring = s3.Substring(1, 5);
Console.WriteLine("Substring: {0}", s3substring);
}
}
}
C# 문자열의 문자 엑세스
문자열(string)은 문자(character)의 집합체이다. 각 문자를 엑세스하고 싶으면, [] (square bracket)을 사용하여 문자 요소를 엑세스한다. 예를 들어, s="Hello" 에서 s[1]이라고 하면 두 번째 문자 즉 e 를 리턴한다. 이는 문자열을 문자배열처럼 취급하는 것으로 모든 C#배열과 마찬가지로 첫 요소는 [0]으로 엑세스한다.
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]);
}
}
}
}
C# StringBuilder 클래스
문자열을 다루는데 중요한 클래스 중의 하나는 System.Text.StringBuilder 클래스이다. String 클래스는 위에서 설명한 대로 Immutable이기 때문에, 문자열 갱신을 많이 하는 프로그램에는 적당하지 않다. StringBuilder 클래스는 문자열 갱신이 많은 곳에서 자주 사용되는데 이는 이 클래스가 별도 메모리를 생성,소멸하지 않고 일정한 버퍼를 갖고 문자열 갱신을 처리하기 때문이다.
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);
}
}
}
댓글 쓰기