C# 문자열(String) 마스터: 기초, 연산, 고급 기법 총정리
C# 문자열(String) 마스터: 기초, 연산, 고급 기법
이 튜토리얼에서는 예제와 함께 C# 문자열과 그 메서드를 학습합니다.
C#에서 문자열은 문자 시퀀스입니다. 예: "hello"는 'h', 'e', 'l', 'l', 'o' 문자 시퀀스 포함.
string 키워드로 문자열 생성. 예:
// 문자열 생성
string str = "C# Programming";
str이라는 string 생성, 텍스트 "C# Programming" 할당. C#에서 문자열은 큰따옴표로 표현.
예제: C# 문자열 생성
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
// 문자열 생성
string str1 = "C# Programming";
string str2 = "Programiz";
// 출력
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.ReadLine();
}
}
}
출력
C# Programming
Programiz
str1, str2 두 문자열 생성 후 출력.
참고: C# 문자열 변수는 int, char 같은 기본 타입이 아님. String 클래스 객체임.
문자열 연산 (String Operations)
C# 문자열은 다양한 메서드로 여러 연산 제공. 자주 쓰이는 연산 살펴보기.
1. 문자열 길이 구하기
문자열 길이 구하려면 Length 속성 사용. 예:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str = "C# Programming";
Console.WriteLine("string: " + str);
// str 길이 구하기
int length = str.Length;
Console.WriteLine("Length: " + length);
Console.ReadLine();
}
}
}
출력
string: C# Programming
Length: 14
Length 속성이 문자열 총 문자 수 계산 반환.
2. 두 문자열 결합 (Join)
두 문자열 결합에 Concat() 메서드 사용. 예:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str1 = "C# ";
Console.WriteLine("string str1: " + str1);
string str2 = "Programming";
Console.WriteLine("string str2: " + str2);
// 두 문자열 결합
string joinedString = string.Concat(str1, str2);
Console.WriteLine("Joined string: " + joinedString);
Console.ReadLine();
}
}
}
출력
string str1: C#
string str2: Programming
Joined string: C# Programming
Concat() 메서드가 str1, str2 결합해 joinedString에 할당.
+ 연산자로도 결합 가능. 더 보기: C# string Concat.
3. 두 문자열 비교
C#에서 Equals() 메서드로 두 문자열 비교. 같으면 true, 다르면 false 반환. 예:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string str1 = "C# Programming";
string str2 = "C# Programming";
string str3 = "Programiz";
// str1, str2 비교
Boolean result1 = str1.Equals(str2);
Console.WriteLine("string str1 and str2 are equal: " + result1);
// str1, str3 비교
Boolean result2 = str1.Equals(str3);
Console.WriteLine("string str1 and str3 are equal: " + result2);
Console.ReadLine();
}
}
}
출력
string str1 and str2 are equal: True
string str1 and str3 are equal: False
str1, str2, str3 세 문자열 생성. Equals()로 동일 여부 확인.
문자열 객체 불변성 (Immutability)
C#에서 문자열은 불변(Immutable)입니다. 한 번 생성하면 변경 불가.
이해 예시:
// 문자열 생성
string str = "Hello ";
str 변수가 "Hello " 문자열 보유.
이제 str 변경 원함:
// "World" 추가
str = string.Concat(str, "World");
Concat()로 "World"를 이전 str에 추가.
불변인데 어떻게 수정 가능할까? 실제로는:
- C#이
"Hello " 값 취득.
"World" 추가해 새 문자열 생성.
- 값
"Hello World" 가진 새 문자열 객체 생성, str에 저장.
- 원본
"Hello "는 다른 변수 참조 없으면 가비지 컬렉션 대상.
문자열 이스케이프 시퀀스 (Escape Sequences)
이스케이프 문자는 문자열 내 특정 문자 이스케이프용. 특수 문자 삽입에 사용.
큰따옴표를 문자열 안에 포함해야 할 때:
// 큰따옴표 포함 시도
string str = "This is the "String" class";
문자열은 큰따옴표로 감싸므로 컴파일러가 "This is the "까지만 문자열로 인식, 에러 발생.
이스케이프 문자 \"로 해결:
// 이스케이프 문자 사용
string str = "This is the \"String\" class.";
\를 큰따옴표 앞에 붙여 문자열 내 포함.
주요 C# 이스케이프 시퀀스:
| 이스케이프 시퀀스 | 문자 이름 |
\' | 작은따옴표 |
\" | 큰따옴표 |
\\ | 백슬래시 |
\0 | 널 |
\n | 줄바꿈 |
\t | 수평 탭 |
문자열 보간 (String Interpolation)
C#에서 문자열 보간으로 변수 문자열 내 삽입 가능. 문자열 리터럴은 $ 문자로 시작. 예:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
string name = "Programiz";
// 문자열 보간
string message = $"Welcome to {name}";
Console.WriteLine(message);
Console.ReadLine();
}
}
}
출력
Welcome to Programiz
name 변수 message 문자열 내 삽입.
string message = $"Welcome to {name}";
주의:
- 문자열 리터럴이
$로 시작
- name 변수 중괄호
{} 안에 위치
C# 문자열 메서드 (Methods of C# string)
다양한 문자열 메서드 중 주요 것들:
| 메서드 | 설명 |
Format() | 서식 지정된 문자열 반환 |
Split() | 문자열을 부분 문자열로 분할 |
Substring() | 부분 문자열 반환 |
Compare() | 문자열 객체 비교 |
Replace() | 지정된 옛 문자 새 문자로 치환 |
Contains() | 부분 문자열 포함 여부 확인 |
Join() | 지정 구분자로 문자열들 결합 |
Trim() | 앞뒤 공백 제거 |
EndsWith() | 주어진 문자열로 끝나는지 확인 |
IndexOf() | 지정 문자 위치 반환 |
Remove() | 문자열에서 문자 제거 |
ToUpper() | 대문자 변환 |
ToLower() | 소문자 변환 |
PadLeft() | 왼쪽 패딩(공백/지정 문자) |
PadRight() | 오른쪽 패딩 |
StartsWith() | 주어진 문자열로 시작하는지 확인 |
ToCharArray() | char 배열로 변환 |
LastIndexOf() | 지정 문자열 마지막 출현 인덱스 |
자주 묻는 질문 (FAQ)
1. C#에서 문자열 배열 어떻게 생성?
데이터 타입 배열과 동일. 예:
using System;
namespace CsharpString {
class Test {
public static void Main(string[] args) {
// 문자열 타입 배열
string[] animals = {"Monkey", "Dog", "Cat"};
// 요소 출력
Console.WriteLine(animals[0]);
Console.WriteLine(animals[1]);
Console.WriteLine(animals[2]);
Console.ReadLine();
}
}
}
출력
Monkey
Dog
Cat
2. C#에서 string과 String 차이?
기술적 차이 없음. C#에서 string은 System.String 별칭.
string 사용 권장: using System; 없이도 작동.