2013-12-10 3 views
0

쉼표로 구분 된 값의 문자열 배열을 만듭니다. 줄을 쉼표로 구분해야하지만 따옴표 안에있는 쉼표는 데이터의 일부가 될 수 없습니다. 예를 들어쉼표로 분리 된 값 최적화 정규 표현식

는 :
\"421 15th Ave.\",\"Beaver Falls, PA\",\"S1\",

나는 새로운 분야에 대한 도시와 국가 사이에 분할 싶지 않을 것이다.

string[] fields = Regex.Split(lines[i], @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"); 

그것은 실행하는 데 시간이 오래 걸립니다 : 여기

는 현재 코드입니다. 내가 사용할 수있는 더 나은 옵션이 있습니까?

감사합니다.

+0

정규식을 사용해야합니까? CSV는 대개 평범한 오래된 '문자열'방법을 사용하여 가장 잘 처리됩니다. – Gusdor

+1

정규식을 사용하지 않아도됩니다. 현재 정규식을 사용하고 있습니다. 더 나은 옵션을 찾고 있습니다. 이 문제를 해결하기 위해 어떤 문자열 방법을 제안 하시겠습니까? – Baxter

+2

일종의'csv' 리더를 사용하십시오. 당신이 괜찮은 것을 사용한다고 가정하면, 이것은 이미 처리되고 코드는 최적화되어야합니다. –

답변

1

CSV 판독기를 사용해 보셨습니까? OpenCsv

를 사용하는 방법에 대한이 스레드를 참조 라비 Thapliyal의 대답 : C 번호 link

내가이 CsvHelper을 추천 할 수 있습니다 : https://github.com/JoshClose/CsvHelper

이 CSV-Reader는 이미 큰 따옴표 안에 쉼표의 경우를 처리한다

우리 프로젝트에서 사용하고있어 매우 편리합니다.

+0

이에 상응하는 C#이 있습니까? – Baxter

+1

Hey Baxter 방금 전에 당신이 :-) 내 대답을 업데이트했습니다. 내 대답은 위의 CsvHelper 링크를 참조하십시오. – xeraphim

+0

Hey Baxter이 답변을 받아 들일 수 있다면 고맙겠습니다. – xeraphim