[C#] 문자열(String) 완벽 정복: 분리, 조건부 출력, 수정하기

정광훈(Unity_9기)·2026년 2월 5일

TIL (Today I Learned)

목록 보기
100/110

오늘 C# 코딩을 하면서 알게 된 문자열 처리 관련 유용한 팁들을 정리해 둡니다.


1. 문자열을 한 글자씩 분리하기

문자열(String)을 쪼개서 개별 문자(Char)로 다루고 싶을 때 사용하는 방법들입니다.

방법 1: ToCharArray() (가장 표준)

문자열을 char 배열로 바로 변환합니다.

string text = "Hello";
char[] characters = text.ToCharArray(); 
// 결과: ['H', 'e', 'l', 'l', 'o']

방법 2: LINQ 사용 (리스트로 변환)

결과를 char가 아닌 string 리스트로 다루고 싶을 때 유용합니다.

using System.Linq;

string text = "Hello";
// 각 글자를 String으로 변환하여 List에 담음
List<string> charList = text.Select(c => c.ToString()).ToList();

방법 3: foreach 반복문

별도 변환 없이 바로 순회도 가능합니다. (stringIEnumerable<char>를 구현하기 때문)

string text = "Hello";
foreach (char c in text)
{
    Console.WriteLine(c);
}

💡 팁 (이모지 주의)
이모지(😊)처럼 특수 문자가 포함된 경우, 위 방법들은 문자가 깨질 수 있습니다. 이때는 StringInfo 클래스를 사용해야 합니다.


2. Console.WriteLine 안에서 삼항 연산자 쓰기

코드를 줄이기 위해 출력문 내부에서 if-else 대신 삼항 연산자를 활용하는 방법입니다.

기본 사용법

조건 ? 참 : 거짓 형태를 그대로 넣으면 됩니다.

int score = 80;
Console.WriteLine(score >= 60 ? "합격" : "불합격");

⚠️ 문자열 보간($)과 함께 쓸 때 주의할 점

$(String Interpolation)와 함께 쓸 때는 반드시 삼항 연산식을 괄호 ()로 감싸야 합니다.
그렇지 않으면 컴파일러가 콜론(:)을 포맷팅 기호로 착각하여 에러가 발생합니다.

bool isOnline = true;

// ❌ 에러 발생 (괄호 없음)
// Console.WriteLine($"상태: {isOnline ? "온라인" : "오프라인"}");

// ✅ 올바른 방법 (괄호 필수!)
Console.WriteLine($"상태: {(isOnline ? "온라인" : "오프라인")}");

3. 문자열 중간 내용 바꾸기

C#의 string은 불변(Immutable) 객체이므로,
내용을 수정하면 항상 새로운 문자열이 반환된다는 점을 기억해야 합니다.
(반환값을 변수에 다시 담아야 함!)

방법 1: 특정 단어 교체 (Replace)

문서 내의 해당 단어를 모두 찾아 바꿉니다.

string text = "나는 사과를 좋아해";
text = text.Replace("사과", "바나나"); 
// 결과: "나는 바나나를 좋아해"

방법 2: 위치(Index)로 삭제 및 삽입 (Remove + Insert)

특정 위치를 콕 집어서 수정해야 할 때 사용합니다.

string text = "Hello World";
// 6번째 인덱스부터 5글자("World") 지우고, 그 자리에 "C#" 넣기
text = text.Remove(6, 5).Insert(6, "C#");
// 결과: "Hello C#"

방법 3: 빈번한 수정 (StringBuilder)

수정이 아주 많이 일어난다면 성능을 위해 StringBuilder를 사용합니다. 배열처럼 인덱스로 접근이 가능합니다.

using System.Text;

StringBuilder sb = new StringBuilder("Hello World");
sb[6] = 'K'; // 특정 위치 글자 바로 변경
Console.WriteLine(sb.ToString()); // 결과: "Hello Korld"

0개의 댓글