Tengo un archivo delimitado por comas con valores de muestra: 1,1076103,22-NOV-16,21051169,50,1083, AAA, TEXT

Pregunta: cómo reemplazar la coma en la última columna que es "AAA, TEXT"

El resultado debería ser así: 1,1076103,22-NOV-16,21051169,50,1083, AAATEXT

-2
MDP 13 dic. 2016 a las 11:14

2 respuestas

La mejor respuesta

Es simple, pero aprende un poco a usar cadenas;)

Public Function MDP(strWork As String)
    Dim splitted() As String = strWork.Split(","c)
    Dim firsts As New List(Of String)

    For i As Integer = 0 To splitted.Count - 3
        firsts.Add(splitted(i))
    Next

    Dim result As String = System.String.Join(",", firsts)

    Return result & "," & splitted(splitted.Count - 2) & splitted(splitted.Count - 1)
End Function

Luego llame con:

 Dim finished As String = MDP("1,1076103,22-NOV-16,21051169,50,1083,AAA,TEXT")
0
Tyler 13 dic. 2016 a las 09:12

Hay una sobrecarga de String.Split que toma un argumento que le dice el número máximo de partes a devolver. Podrías usarlo así:

Option Infer On
Option Strict On

Module Module1

    'TODO: think up a good name for this function
    Function X(s As String) As String
        Dim nReturnParts = 7
        Dim parts = s.Split({","c}, nReturnParts)
        If parts.Count < nReturnParts Then
            Throw New ArgumentException($"Not enough parts - needs {nReturnParts}.")
        End If

        parts(nReturnParts - 1) = parts(nReturnParts - 1).Replace(",", "")
        Return String.Join(",", parts)

    End Function

    Sub Main()
        Dim s() = {"1,1076103,22-NOV-16,21051169,50,1083,AAA,TEXT",
            "1,1076103,22-NOV-16,21051169,50,1083,BBBTEXT",
            "1,1076103,22-NOV-16,21051169,50,1083,C,C,C,TEXT"}

        For Each a In s
            Console.WriteLine(X(a))
        Next

        Console.ReadLine()

    End Sub

End Module

Salidas:

1,1076103,22-NOV-16,21051169,50,1083, AAATEXT
1,1076103,22-NOV-16,21051169,50,1083, BBBTEXT
1,1076103,22-NOV-16,21051169,50,1083, CCCTEXT

2
Andrew Morton 13 dic. 2016 a las 09:41