작성날짜 : 2011-03-25 |
참고 : http://msdn.microsoft.com/ko-kr/library/ms228364.aspx
선문비트 프로젝트 : http://cafe.daum.net/smbitpro?t__nil_cafemy=item
String
문자열은 String 형식의 개체를 말합니다.
문자열은 char 개체의 읽기 전용 컬렉션으로 저장이 되며 char는 UTF-16으로 인코딩 된 유니코드입니다.
문자열이 Char의 읽기 전용 컬렉션이라 했는데 이는 문자열 내용이 변경이 되면 새로운 개체가 형성되고 기존 개체는 가비지 수집 대상이 되기 때문입니다.
문자열을 작성하거나 조작, 비교 등의 작업을 위해 다양한 메서드를 제공하고 있으며 Format메서드를 통해 형식 문자열을 작성할 수도 있습니다. 또한 Substring과 같이 부분 문자열을 추출하기 위한 메서드들도 제공하고 있으며 인덱서를 통해 요소 문자에 대한 읽기 전용의 접근이 가능합니다.
String은 원소들에 대한 읽기전용의 컬렉션이다.
C#에서는 char가 1byte가 아니라 2byte이다.
문자열 연결
n개의 문자열을 하나로 연결하는 방법에 대해 얘기해 봅시다.
먼저, + 연산자를 사용할 수가 있습니다.
+연산자를 사용하면 간편하고 직관적인 반면 낮은 효율성을 지니게 됩니다.
내부적으로는 연산 과정에서 새로운 문자열을 생성을 하게 되고 기존 문자열은 가비지 수집 대상이 되기 때문입니다.
그리고, String클래스의 Concat이나 Format 메서드를 사용할 수도 있는데 +연산자와 같은 원리로 수행이 됩니다.
이러한 비효율성을 줄이기 위해 StringBuiler클래스를 제공하고 있는데 StringBuiler클래스의 Append메서드를 사용함으로써 String 클래스의 연산자나 메서드를 사용하는 것보다 높은 효율성을 추구할 수도 있습니다.
string a = "hello"; a = "yahoo"; // 오류 CS0200: 'string.this[int]' 속성 또는 인덱서는 읽기 전용이므로 할당할 수 없습니다. a[4] = 'k';
// 여러개의 값을 포함해서 한개의 문자열을 만들려 할때 사용. string.Format("이름 : {0} 번호 : {1}", name, num); // string개체를 잘 사용해야 프로그램이 유연해 질 것이다. // 빈번하게 string의 내용을 변경해야 한다면.. //(퍼포먼스가 필요하다면) StringBuilder를 사용하라.
Console.WriteLine(a); |
string name = "hello"; string name2 = "hello";
if (name.Equals(name2)) { Console.WriteLine("이름이 같습니다"); } else { Console.WriteLine("이름이 다릅니다"); }
if (string.ReferenceEquals(name, name2)) { Console.WriteLine("개체가 같습니다"); } else { Console.WriteLine("개체가 다릅니다"); }
char s = name[2]; Console.WriteLine("{0}", s);
if (name.Contains("el")) { Console.WriteLine("{0}에는 {1}이 있습니다.", name, "el"); }
if (name.CompareTo("yahoo") > 0) { // 이 코드 보다 Console.WriteLine(name + "이 yahoo보다 큽니다."); // 이 코드가 퍼포먼스가 더 좋은 코드다. Console.WriteLine("{0}이 yahoo보다 큽니다.",name); } else { Console.WriteLine(name + "이 yahoo보다 작습니다."); }
int k = name.IndexOf("l"); Console.WriteLine("{0}에 l은 {1}인덱스에 있습니다.", name, k);
k = name.IndexOf("ll"); Console.WriteLine("{0}에 ll은 {1}인덱스에 있습니다.", name, k);
int j = k + 1; k = name.IndexOf('l', j); Console.WriteLine("{0}에 {1}인덱스 이후에 l문자는 인덱스 {2}에 있습니다.", name, k, j); string hello = name.Remove(3); Console.WriteLine(hello);
string yahoo = name.Replace('h', 'H'); //string yahoo = name.Replace("hel", "Yoo"); Console.WriteLine(yahoo);
char[] splitor = new char[2]; splitor[0] = 'Y'; splitor[1] = 'o';
string[] elements = yahoo.Split(splitor);
foreach (string s2 in elements) { //Console.WriteLine(s2 + " "); if (s2.Equals(string.Empty)) { Console.WriteLine("splitor 문자가 있습니다."); } else { Console.WriteLine("splitor 문자가 없습니다."); } } //name.Trim(); // 공백 문자 제거할때 사용. } |
실행 결과
'Programming > .NET' 카테고리의 다른 글
[.NET] is 와 as (0) | 2015.05.19 |
---|---|
[.NET] 다형성 (0) | 2015.05.19 |
[.NET] Array (배열) (0) | 2015.05.19 |
[.NET] Object (객체) (0) | 2015.05.19 |
[.NET] Constructor(생성자) (0) | 2015.05.19 |