Autor Tema: Un Split con mas de un separador  (Leído 3475 veces)

0 Usuarios y 1 Visitante están viendo este tema.

softmania

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +4/-0
    • Ver Perfil
Un Split con mas de un separador
« en: Noviembre 10, 2013, 11:47:24 pm »
Hola a todos ...

Aquí les dejo como hacer un split con varios separadores

 
Código: (VB) [Seleccionar]

        Dim sCadena As String
        Dim sResultado As String = ""
        Dim sSplit() As String
        'cargamos una cadena de nombres y variamos los separadores
        sCadena = "pablo;juan;pedro|marcos;miguel|jorge"
        'en el split especificamos que carateres serán utilizados como separador
        'en este caso ";" y "|"
        sSplit = sCadena.Split(New [Char]() {";", "|"})
        'y mostramos el resultado
        For Each sResulFor As String In sSplit
            sResultado = sResultado + sResulFor + vbNewLine
        Next
        MsgBox(sResultado)

   
Citar
  No es algo muy común de utilizar, pero en algún momento pueden necesitarlo ...

      salu2 a todos
Solo se que no se nada!!! ;) By Sócrates

wolf_kof

  • Visitante
Re:Un Split con mas de un separador
« Respuesta #1 en: Noviembre 14, 2013, 11:35:11 pm »
Pues si un Split tiene la función de separar los parámetros de una cadena para agregarlos a una matrix, y a lo contrario que tu dices es mucho más util de lo que crees, este es un ejemplo:


Código: (vb) [Seleccionar]
Imports MySql.Data.MySqlClient

Public Class Consultar
    Public Opcion As String = ""
    Public Tabla As String
    Public Campo As String
    Public Campos() As String
    Public Tipo As String
    Public Valor As String
    Public Cadena As String
    Public BEmpresa As Boolean
    Public BAdicional As Boolean
    Public Limites As Boolean = False
    Public LimiteA As Integer
    Public Limiteb As Integer
    Public BTTexto As Boolean = False
    Public BTodo As Boolean = False
    Public Adicional As String
    Public CONCATE As Boolean
    Dim Conex As New DataBase
    Dim CMConsulta As New MySqlCommand
    Public RDConsulta As MySqlDataReader
    Public DSConsulta As DataSet
    Public BSConsulta As BindingSource
    Public DAConsulta As MySqlDataAdapter

    Public Function vString() As String
        Dim Sql As String
        Dim vTipo As String
        Dim vCampo As String
        Dim Variables() As String = Split(Valor, " ")
        Dim vVariables As String
        Dim Concatenador As String = "AND"

        If CONCATE Then Concatenador = "OR"

        Sql = ""
        vTipo = ""
        vCampo = ""
        vVariables = ""

        If Opcion = "" Then
            Select Case Tipo
                Case "IGUAL" : vTipo = "="
                Case "DIFERENTE" : vTipo = "<>"
                Case "CONTENGA" : vTipo = "LIKE"
            End Select
                For n As Integer = 0 To UBound(Campos)
                    If n <> 0 Then
                        vCampo += ", "
                    End If
                    vCampo += Campos(n)
                Next
                Sql = "SELECT " & vCampo & " FROM " & Tabla & " WHERE " & Campo & " "
            If BTodo = False Then
                For m As Integer = 0 To UBound(Variables)
                    If m <> 0 Then
                        Sql += " " & Concatenador & " " & Campo & " "
                    End If
                    Sql += vTipo & " "

                    If IsNumeric(Variables(m)) And BTTexto = False Then
                        Sql += Variables(m)
                    Else
                        If Tipo = "CONTENGA" Then Sql += "'%" & Variables(m) & "%'"
                        If Tipo = "IGUAL" Or Tipo = "DIFERENTE" Then Sql += "'" & Variables(m) & "'"
                    End If
                Next
            ElseIf BTodo = True Then
                Sql += vTipo & " "

                Dim Todo As String = Nothing

                For m As Integer = 0 To UBound(Variables)
                    If m <> 0 Then
                        Todo += " "
                    End If
                    Todo += Variables(m)
                Next

                If IsNumeric(Todo) Then
                    Sql += Todo
                Else
                    If Tipo = "CONTENGA" Then Sql += "'%" & Todo & "%'"
                    If Tipo = "IGUAL" Or Tipo = "DIFERENTE" Then Sql += "'" & Todo & "'"
                End If

            End If
            Select Case BEmpresa
                Case True : Sql += " AND Id_Empresa = " & IdEmpresa
            End Select
            Select Case BAdicional
                Case True : Sql += " AND " & Adicional
            End Select
            Select Case Limites
                Case True
                    Sql += " LIMIT " & LimiteA & ", " & Limiteb
            End Select
        ElseIf Opcion = "Tabla" Then

            For n As Integer = 0 To UBound(Campos)
                If n <> 0 Then
                    vCampo += ", "
                End If
                vCampo += Campos(n)
            Next


            Select Case BEmpresa
                Case True : Sql = "SELECT " & vCampo & " FROM " & Tabla & " WHERE Id_Empresa = " & IdEmpresa
                Case False : Sql = "SELECT " & vCampo & " FROM " & Tabla
            End Select

            Select Case BAdicional
                Case True
                    Select Case BEmpresa
                        Case True : Sql += " AND " & Adicional
                        Case False : Sql += " WHERE " & Adicional
                    End Select
            End Select

            Select Case Limites
                Case True
                    Sql += " LIMIT " & LimiteA & ", " & Limiteb
            End Select

        End If
        Return Sql
    End Function

    Public Sub Cargar()
        Try
            Conex.vConectar()
            CMConsulta.Connection = Conex.vConecxion
            CMConsulta.CommandType = CommandType.Text
            CMConsulta.CommandText = vString()
            RDConsulta = CMConsulta.ExecuteReader
            Debug.Print("Consulta Cargada Exitosamente")
        Catch ex As MySqlException
            Debug.Print("Exepción de MySQL:      " & ex.Message)
        End Try

    End Sub

    Public Sub Carga2()

        Conex.vConectar()
        DSConsulta = New DataSet
        DAConsulta = New MySqlDataAdapter(vString, Conex.vConecxion)
        DSConsulta.Tables.Add(Tabla)
        DAConsulta.Fill(DSConsulta.Tables(Tabla))

        Debug.Print(DSConsulta.Tables.ToString)
        BSConsulta.DataSource = DSConsulta
        BSConsulta.DataMember = Tabla

    End Sub

    Public Sub Cargar3()
        Conex.vConectar()
        CMConsulta.Connection = Conex.vConecxion
        CMConsulta.CommandType = CommandType.Text
        CMConsulta.CommandText = Cadena
        RDConsulta = CMConsulta.ExecuteReader
    End Sub

    Public Sub Descargar()
        RDConsulta.Close()
        RDConsulta = Nothing
        Conex.vDesconectar()
        CMConsulta.Dispose()
    End Sub

    Public Sub Descarga2()
        DAConsulta.Dispose()
        DSConsulta.Dispose()
        Conex.vDesconectar()
    End Sub
End Class


softmania

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +4/-0
    • Ver Perfil
Re:Un Split con mas de un separador
« Respuesta #2 en: Noviembre 16, 2013, 02:35:31 am »
Hola colega NDWgt ... en el ejemplo que pusiste veo que tienes un split y con un solo separador, el espacio ... es por eso que explico que no es tan común usar un split con varios separadores, la idea era mostrar como se puede extender un split con mas de un separador. En muchos lenguajes hay que hacer una gran función para poder obtener los resultados que se obtiene en una simple línea de vb.net, a pesar de que en esos lenguajes también exista dicha función o su equivalente.
Solo se que no se nada!!! ;) By Sócrates

wolf_kof

  • Visitante
Re:Un Split con mas de un separador
« Respuesta #3 en: Noviembre 16, 2013, 07:18:00 pm »
Muy bien, si agregar al generador de la consulta un split con varios separadores!!!!! que fue lo que hize despues de ver tu código y agarre el incorrecto, queda una muy buena consulta de mysql o sql.