CodeGym /행동 /C# SELF /string 클래스의 주요 메서드

string 클래스의 주요 메서드

C# SELF
레벨 9 , 레슨 3
사용 가능

1. 들어가기

실제로 문자열로 제일 많이 하는 작업들은 이런 것들이야:

  • 문자열 길이 구하기(그리고 비어있는지 확인하기).
  • 대소문자 바꾸기(전부 대문자나 전부 소문자로 만들기).
  • 문자열에 특정 단어나 문자가 들어있는지 찾기.
  • "나쁜 단어"를 더 괜찮은 걸로 바꾸기.
  • 구분자 기준으로 문자열 나누기("전화번호 리스트를 콤마로 구분" 같은 거).
  • 문자열 앞뒤 공백 제거하기.
  • 문자열 일부만 뽑아오기(예: 성의 앞 3글자).
  • 두 문자열이 대소문자 무시하고 같은지 비교하기.

이런 작업마다 string 클래스에 딱 맞는 메서드가 있어.

주요 메서드 표

작업 메서드/속성 예시
문자열 길이
Length
name.Length
첫 번째 문자
[0]
name[0]
마지막 문자
[name.Length - 1]
name[name.Length - 1]
소문자로 변환
ToLower()
name.ToLower()
대문자로 변환
ToUpper()
name.ToUpper()
부분 문자열 있는지 확인
Contains()
name.Contains("Иван")
부분 문자열 위치
IndexOf()
name.IndexOf("а")
문자열 일부 추출
Substring()
name.Substring(1, 3)
문자열 비교
Equals(), ==
name.Equals("Петр")
공백 제거
Trim()
name.Trim()
구분자로 나누기
Split()
csv.Split(',')
배열을 문자열로 합치기
string.Join()
string.Join("-", array)
일부 교체
Replace()
text.Replace("старое", "новое")
빈 문자열?
IsNullOrEmpty()
string.IsNullOrEmpty(name)

오늘은 이 중에서 몇 개만 자세히 볼 거야.

2. 문자열을 배열처럼 다루기

문자열 길이: Length 속성

제일 간단한 건 문자열에 문자가 몇 개인지 알아내는 거야. 이럴 땐 Length 속성을 써. 예시:

string name = "Аркадий";
Console.WriteLine(name.Length);  // 출력: 7
  • Length속성이야(메서드 아님), 그래서 괄호 필요 없어.
  • 문자열이 비어있으면("") 길이는 0이야.

가끔은 뭔가 "위험한" 작업(예: 부분 문자열 뽑기) 하기 전에 길이부터 체크하는 게 좋아.

인덱스로 문자 얻기: 인덱서 [i]

배열 다루는 거랑 똑같아: 문자열은 문자들의 배열이거든. 예시:

string hello = "Привет";
char firstChar = hello[0]; 	// 'П'
char lastChar = hello[^1]; 	// 'т'
Console.WriteLine(firstChar);
  • 인덱스는 0부터 시작이야!
  • 조심해: 없는 인덱스(hello[100])에 접근하면 예외가 터져.

3. 문자열 비교

연산자 ==!=

C#에서는 이 연산자들이 그냥 두 문자열의 내용을 비교해.

string word1 = "Hello";
string word2 = "Hello";
bool areEqual = word1 == word2; // true

Equals 메서드

== 연산자랑 다르게, Equals 메서드는 파라미터를 줄 수 있어. 예를 들어, 대소문자 무시하고 비교할 때 — "Мама" == "мама" 그리고 "МАМА"도 같게. 예시:

string pass1 = "Qwerty";
string pass2 = "qwerty";

// 기본 비교(대소문자 구분)
bool isSame = pass1.Equals(pass2); // false

// 대소문자 무시하고 비교
bool ignoreCase = pass1.Equals(pass2, StringComparison.OrdinalIgnoreCase); // true

4. 대소문자 변환

문자열을 전부 대문자(혹은 소문자)로 바꾸고 싶으면 string 클래스에 ToLower()ToUpper()라는 메서드가 있어.

예를 들어, 사용자한테 "중요!" 같은 느낌을 주고 싶거나, 비교를 위해 이름을 전부 소문자로 바꾸고 싶을 때 이렇게 해:

string text = "Мне Не Страшен Серый Волк!";
Console.WriteLine(text.ToUpper()); // МНЕ НЕ СТРАШЕН СЕРЫЙ ВОЛК!
Console.WriteLine(text.ToLower()); // мне не страшен серый волк!
  • 참고: 원래 문자열은 안 바뀌어!
  • 대소문자 무시하고 비교할 때 써도 좋아.

5. 불필요한 공백 제거

만약 사용자가 실수로(아니면 일부러, 누가 알겠어) 이름 앞뒤에 공백을 넣었다면? Trim이 도와줄 거야! 이건 세 가지 버전이 있어:

  • Trim — 문자열 앞뒤 모든 공백 제거;
  • TrimStart — 앞쪽 공백만 제거;
  • TrimEnd — 뒤쪽 공백만 제거.
string raw = "   Гоша   ";
string cleaned = raw.Trim(); 		// "Гоша"
Console.WriteLine($"[{cleaned}]");

6. 부분 문자열 얻기: Substring

가끔 문자열에서 일부만 뽑아야 할 때가 있어.

string word = "Привет";
string part = word.Substring(2);      // "ивет"
string part2 = word.Substring(2, 3);  // "иве"
  • Substring(startIndex)startIndex부터 끝까지.
  • Substring(startIndex, length)startIndex부터 length만큼.

주의: 문자열 범위를 벗어나거나 length < 0이면 예외가 나와!

7. 문자열이 비었는지 확인

문자열을 쓰기 전에(예: 보간할 때) null이거나 비어있는지 체크하는 게 좋아. 안 그러면 에러나 이상한 결과가 나올 수 있어.

a) null 체크: == 연산자

string s = null;
if (s == null)
    Console.WriteLine("문자열이 null이야");

단점: 빈 문자열("")은 못 잡아.

b) string.IsNullOrEmpty()로 체크

null이랑 빈 문자열 둘 다 체크해:

string s = "";
if (string.IsNullOrEmpty(s))
    Console.WriteLine("문자열이 비었거나 null이야");

c) string.IsNullOrWhiteSpace()로 체크

공백, 탭 등 "안 보이는" 문자만 있는 문자열도 같이 잡아줘:

string s = "     ";
if (string.IsNullOrWhiteSpace(s))
    Console.WriteLine("문자열이 비었거나, null이거나, 공백만 있어");

8. 문자열 메서드 쓸 때 흔한 실수

  • 제일 흔한 건 문자열이 불변(immutable)이라는 걸 까먹는 거야. 위에서 이미 얘기했지.
  • 또 많이 하는 실수는 비교나 찾을 때 대소문자 구분을 신경 안 쓰는 거야.

예를 들어, 사용자가 "андрей"라고 입력했는데 리스트엔 이미 "Андрей"가 있으면, 그냥 Contains==만 쓰면 안 맞을 수 있어. 둘 다 같은 대소문자로 바꾸거나, 메서드 오버로드를 써야 해.

그리고 인덱스를 반환하는 메서드 쓸 때도 조심! 인덱스는 0부터 시작이고, -1이 나오면 "못 찾았다"는 뜻이지, "인덱스 0"이 아니야.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION