Italian Doppie Virgolette

sirjo66

Well-Known Member
Licensed User
Longtime User
a me funziona

ho provato con la stringa
15601,01/18/2012,02:58:26,"RICETTA A" (un sacco di spazi) ,120, 50, 70, 60, 120 , 20,
e mi ha estratto i dati correttamente, ha eliminato gli spazi in più.

una volta diviso in campi, devi fare un TRIM per togliere le virgolette all'inizio e alla fine delle stringhe (in questo caso il campo che contiene "RICETTA A") e poi devi fare un replace per trasformare le doppie virgolette "" in semplici virgolette "
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
ecco qui il codice, devi adattarlo al ciclo
B4X:
    Dim pattern As String = "(?:,|\n|^)(""(?:(?:"""")*[^""]*)*""|[^"",\n]*|(?:\n|$))"

    ' una riga di esempio
    Dim dati As String = "15601,01/18/2012,02:58:26,""RICETTA A""                        ,120, 50, 70, 60, 120 , 20,"

    ' divido la riga in campi e la ricostruisco, cioè trasformo da CSV in TSV
    Dim match As Matcher = Regex.Matcher(pattern, dati)
    Dim risultato As String = ""   
    Do While match.Find
        Dim campo As String = match.Group(1)
        If campo.StartsWith("""") Then campo = campo.SubString(1) ' trim prime virgolette
        If campo.EndsWith("""") Then campo = campo.SubString2(0, campo.Length-1) ' trim ultime virgolette
        campo = campo.Replace("""""", """").Trim
        risultato = risultato & TAB & campo
    Loop
    risultato = risultato.SubString(1) ' tolgo il primo TAB

    ' adesso divido e trasformo in array
    Dim Values() As String = Regex.Split(TAB, risultato)
 
Top