1. Regex.Split
C#의 Regex.Split 은 정규식 패턴을 기준으로 문자열을 잘라주는 메서드입니다.
string.Split(',')처럼 단순 문자 기준이 아니라,
“특정 패턴”에 맞을 때만 잘라주는 게 가능해요.
using System.Text.RegularExpressions;
string[] 결과 = Regex.Split(대상문자열, "정규식패턴");
2. CSV에 맞는 정규식 패턴
CSV에서 중요한 규칙:
- 칼럼 구분자 = , (콤마)
- 하지만 따옴표(" ") 안의 콤마는 무시해야 함
이걸 정규식으로 표현하면
,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)
3. 정규식 쪼개서 설명
- ,
→ 일단 콤마를 찾는다. - (?= ... )
→ "lookahead" 문법. 이 위치에서 뒤쪽 조건이 만족할 때만 분리한다. - (?:[^\"]*\"[^\"]*\")*
→ "따옴표 쌍이 짝수 번 등장하는 패턴"
(즉, 지금 콤마가 따옴표 안에 있지 않음을 보장) - [^\"]*$
→ 문자열 끝까지 남은 따옴표 개수가 짝수임을 보장.
(열린 따옴표가 닫히지 않은 상태면 분리 금지)
전체적으로 말하면:
"따옴표 짝이 맞는 위치에서만 콤마를 분리하기"
4. 코드 적용 예시
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string line = "\"2\",\"개발자\",\"W, A, S, D키를 이용하여 이동하세요\",\"left\",\"Admin\"";
// ✅ 따옴표 안 콤마는 무시, 바깥 콤마만 split
string[] values = Regex.Split(line, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
for (int i = 0; i < values.Length; i++)
{
Console.WriteLine($"{i}: {values[i].Trim('"')}");
}
}
}
5. 출력 결과
0: 2
1: 개발자
2: W, A, S, D키를 이용하여 이동하세요
3: left
4: Admin'C# 문법' 카테고리의 다른 글
| [C#] List.Find 정의 (2) | 2025.08.28 |
|---|---|
| [C#] is, as 키워드 (형변환 문법) (0) | 2025.07.18 |
| [C#] StringBuilder (0) | 2025.04.16 |
| [C#] 델리게이트, 람다 및 LINQ (0) | 2025.04.08 |
| [C#] 예외처리(Try-catch), 값형과 참조형, 박싱과 언박싱 (0) | 2025.04.07 |