FileHelpers BeforeReadRecords 이벤트에서 두 개의 큰 따옴표가있는 필드에서 모든 작은 큰 따옴표를 조작하는 정규식

쪽빛

Filehelpers BeforeReadRecords Event에서 두 개의 큰 따옴표가있는 필드에서 모든 작은 "큰 따옴표"를 조작하려면 정규식이 필요합니다.

CSV 콘텐츠 :

"Mine"s Minesweeper", "Yours"s Minesweeper", "Uncle Sam"s Minesweeper"
"Mine"s Minesweeper2", "Yours"s Minesweeper2", "Unknown Minesweeper3"

모든 내부 큰 따옴표를 대체하기 위해 vb.net 정규식을 만드는 데 도움이 필요합니다. 현재 우리는 아래 approrach를 사용하고 있습니까?

Dim engine As New FileHelperEngine(cb.CreateRecordClass())
                AddHandler engine.BeforeReadRecord, AddressOf BeforeReadRecordHandler

이벤트 코드

    Sub BeforeReadRecordHandler(engine As EngineBase, e As FileHelpers.Events.BeforeReadEventArgs(Of Object))
        Try
            Dim newLine As String = ""
            Dim sep As String = ""
            Dim arr() As String = e.RecordLine.Split(",")
            arr.AsParallel().ForAll(Sub(x)
                                        If x.Length > 1 Then
                                            newLine = String.Format("{0}{1}{2}", newLine, sep, x.Substring(1, IIf(x.Length <= 2, 0, x.Length - 2)).Replace("""", """"""))


                                        Else
                                            newLine = String.Format("{0}{1}{2}", newLine, sep, x)
                                        End If

                                        sep = ","
                                    End Sub)
            e.RecordLine = newLine
        Catch ex As Exception

        End Try
    End Sub

에 대한 정규식을 생성하려고합니다.

String.Format("{0}{1}{2}", newLine, sep, x.Substring(1, IIf(x.Length <= 2, 0, x.Length - 2)).Replace("""", """""")).

출력은

CSV Content:

"Mine""s Minesweeper", "Yours""s Minesweeper", "Uncle Sam""s Minesweeper"
"Mine""s Minesweeper2", "Yours""s Minesweeper2", "Unknown Minesweeper3"
태 미르

.Net은 임의 길이의 lookbehind를 지원하므로 다음을 사용할 수 있습니다.

(?<!(^|,)\s*)"(?!\s*($|,))

함께 사용

Regexp.replace(input,(?<!(^|,)\s*)"(?!\s*($|,)),"""""",RegexOptions.Multiline)

이것은 줄의 시작이나 쉼표가 앞에 나오지 않고 문자열이나 쉼표의 끝이 뒤 따르지 않는 모든 "와 일치합니다. 두 조건 모두 임의의 양의 공백을 무시합니다.

CSV의 항목이 따옴표로 묶여 있지 않거나 항목 텍스트에 쉼표가 있으면 오작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관