오늘 C# 코딩을 하면서 알게 된 문자열 처리 관련 유용한 팁들을 정리해 둡니다.
문자열(String)을 쪼개서 개별 문자(Char)로 다루고 싶을 때 사용하는 방법들입니다.
ToCharArray() (가장 표준)문자열을 char 배열로 바로 변환합니다.
string text = "Hello";
char[] characters = text.ToCharArray();
// 결과: ['H', 'e', 'l', 'l', 'o']
결과를 char가 아닌 string 리스트로 다루고 싶을 때 유용합니다.
using System.Linq;
string text = "Hello";
// 각 글자를 String으로 변환하여 List에 담음
List<string> charList = text.Select(c => c.ToString()).ToList();
foreach 반복문별도 변환 없이 바로 순회도 가능합니다. (string은 IEnumerable<char>를 구현하기 때문)
string text = "Hello";
foreach (char c in text)
{
Console.WriteLine(c);
}
💡 팁 (이모지 주의)
이모지(😊)처럼 특수 문자가 포함된 경우, 위 방법들은 문자가 깨질 수 있습니다. 이때는StringInfo클래스를 사용해야 합니다.
코드를 줄이기 위해 출력문 내부에서 if-else 대신 삼항 연산자를 활용하는 방법입니다.
조건 ? 참 : 거짓 형태를 그대로 넣으면 됩니다.
int score = 80;
Console.WriteLine(score >= 60 ? "합격" : "불합격");
$)과 함께 쓸 때 주의할 점$(String Interpolation)와 함께 쓸 때는 반드시 삼항 연산식을 괄호 ()로 감싸야 합니다.
그렇지 않으면 컴파일러가 콜론(:)을 포맷팅 기호로 착각하여 에러가 발생합니다.
bool isOnline = true;
// ❌ 에러 발생 (괄호 없음)
// Console.WriteLine($"상태: {isOnline ? "온라인" : "오프라인"}");
// ✅ 올바른 방법 (괄호 필수!)
Console.WriteLine($"상태: {(isOnline ? "온라인" : "오프라인")}");
C#의 string은 불변(Immutable) 객체이므로,
내용을 수정하면 항상 새로운 문자열이 반환된다는 점을 기억해야 합니다.
(반환값을 변수에 다시 담아야 함!)
Replace)문서 내의 해당 단어를 모두 찾아 바꿉니다.
string text = "나는 사과를 좋아해";
text = text.Replace("사과", "바나나");
// 결과: "나는 바나나를 좋아해"
Remove + Insert)특정 위치를 콕 집어서 수정해야 할 때 사용합니다.
string text = "Hello World";
// 6번째 인덱스부터 5글자("World") 지우고, 그 자리에 "C#" 넣기
text = text.Remove(6, 5).Insert(6, "C#");
// 결과: "Hello C#"
StringBuilder)수정이 아주 많이 일어난다면 성능을 위해 StringBuilder를 사용합니다. 배열처럼 인덱스로 접근이 가능합니다.
using System.Text;
StringBuilder sb = new StringBuilder("Hello World");
sb[6] = 'K'; // 특정 위치 글자 바로 변경
Console.WriteLine(sb.ToString()); // 결과: "Hello Korld"