Sample code for 30+ languages & platforms
PureBasic

CSV Special Chars - Comma, Double-Quotes

See more CSV Examples

The Chilkat CSV class/component automatically handles special characters which include double-quotes, and the delimiter character (comma or semicolon).

The Chilkat CSV library/component/class is freeware. The downloads for .NET, C++, Perl, Java, Ruby, and Python contain all of the Chilkat classes, some of which are freeware and some of which require licensing.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkCsv.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example program loads a file (sample.csv)
    ; that contains this content:
    ; 
    ; year,color,country,food
    ; 2001,red,France,cheese
    ; 2005,blue,"United States",hamburger
    ; 2008,green,Italy,pasta
    ; 1998,orange,Japan,sushi
    ; 
    ; The first row contains the column names.
    ; This file is available at:
    ; http://www.chilkatsoft.com/testData/sample.csv

    csv.i = CkCsv::ckCreate()
    If csv.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Prior to loading the CSV file, indicate that the 1st row
    ; should be treated as column names:
    CkCsv::setCkHasColumnNames(csv, 1)

    ; Load the CSV records from the file:

    success = CkCsv::ckLoadFile(csv,"sample.csv")
    If success <> 1
        Debug CkCsv::ckLastErrorText(csv)
        CkCsv::ckDispose(csv)
        ProcedureReturn
    EndIf

    ; A field may contain the delimiter character (in this case
    ; the delimiter is a comma):
    ; Change "cheese" to "cheese,baguette"
    ; ("cheese" is at row=0, column=3
    success = CkCsv::ckSetCell(csv,0,3,"cheese,baguette")

    ; A field may also contain double-quotes:
    ; Change blue to shiny "metallic" blue
    success = CkCsv::ckSetCell(csv,1,1,"shiny " + Chr(34) + "metallic" + Chr(34) + " blue")

    ; Write the updated CSV to a string and display:
    csvDoc.s
    csvDoc = CkCsv::ckSaveToString(csv)
    Debug csvDoc

    ; Save the CSV to a file:
    success = CkCsv::ckSaveFile(csv,"out.csv")
    If success <> 1
        Debug CkCsv::ckLastErrorText(csv)
    EndIf

    ; The out.csv contains this:
    ; year,color,country,food
    ; 2001,red,France,"cheese,baguette"
    ; 2005,"shiny ""metallic"" blue","United States",hamburger
    ; 2008,green,Italy,pasta
    ; 1998,orange,Japan,sush


    CkCsv::ckDispose(csv)


    ProcedureReturn
EndProcedure