none
Validar un solo espacio entre palabras. RRS feed

  • Pregunta

  • buenas tardes a todos, me podrían ayudar con lo siguiente: tengo un textbox y lo que necesito es que el usuario pueda agregar un solo espacio entre palabras ejemplo el textbox pide un nombre entonces solo quedaría asi: Jose Manuel ya si el usuario quiere agregar mas espacios entre Jose y Manuel que no le permita..estoy trabajando en visual basic 2017...gracias de ante manos
    lunes, 5 de noviembre de 2018 18:07

Respuestas

  • Aquí te va otro ejemplo

    Public Class Form1
    
        'Contador de espacios()
        Private contador As Integer = 1
        Private start As Integer = 0
        Private result As String
    
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            'comprobamos si hay mas de dos espacios y establecemos el contador en 2
            If TextBox1.Text.Contains("  ") Then
                contador = 2
                start = TextBox1.Text.Count
            End If
    
            'comprobamos si el contador es igual a dos si es a si que remplace los dos espacio por uno
            'y que el usuario no pueda agregar un espacio mas
            If contador > 1 Then
                result = TextBox1.Text.Replace("  ", " ")
                TextBox1.Text = result
                TextBox1.SelectionStart = start
                contador = 1
            End If
        End Sub
    
    End Class

    lunes, 5 de noviembre de 2018 20:31

Todas las respuestas

  • Puedes colocar código en el evento TextChanged del Textbox para que sustituya las cadenas de 2 espacios, si las hay, por un solo espacio:

    Dim iPos As Integer
    iPos = Text1.SelStart

    Text1.Text = text1.Text.Replace("  ", " ").Trim

    Text1.SelStart = iPos


    Saludos, Javier J


    lunes, 5 de noviembre de 2018 18:30
  • Buen día Reynaldo, te sugiero que lleves el control de cuando se presione la tecla espacio, de ahí tu definas en tu código que hacer cuando la cuenta es mayor a 1:

       Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            Dim ciclo as Short = 0
            If TextBox1.Text.Length > 0 Then
                If Asc(TextBox1.Text) = 32 Then
                    MsgBox("espacio")
                    ciclo = ciclo + 1
                    if ciclo > 1 then 
                            MsgBox("Mas de un espacio")
                            'aqui el que hacer cuando lleguemos a 2 espacios
                    End If
                End If

            End If


            'End If
        End Sub

    Si lo resolviste marcar como respuesta.

    Saludos


    • Editado gasgdl lunes, 5 de noviembre de 2018 18:38
    lunes, 5 de noviembre de 2018 18:36
  • Hola:
    en un form con 1extBox, copia y pega el siguiente código

    Public Class Form1
        Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            If CountOccurrences(TextBox1.Text, " ") > 1 Then
                ' teclas adicionales permitidas
                If Asc(e.KeyChar) = 8 Then
                    e.Handled = False
                Else
                    e.Handled = True
                End If
            End If
        End Sub

        Private Function CountOccurrences(ByVal stringIn As String, ByVal searchFor As String) As Integer
            Dim position As Integer
            Dim wordCount As Integer
            ' Find the first occurrence
            position = stringIn.IndexOf(searchFor)
            If position > 0 Then
                wordCount = 1
            End If
            Do While position > 0
                ' Find remaining occurrences
                position = stringIn.IndexOf(searchFor, position + 1)
                If position > 0 Then
                    ' Increment the hit counter
                    wordCount = wordCount + 1
                End If
            Loop
            Return wordCount
        End Function
    End Class

    Un saludo desde Bilbo
    Carlos

    lunes, 5 de noviembre de 2018 18:47
  • Solo una corrección J.Carlos, el código ASCII 8 es BackSpace no es Space, el Space (espacio) es el 32

    Saludos


    • Editado gasgdl lunes, 5 de noviembre de 2018 18:53
    lunes, 5 de noviembre de 2018 18:53
  • Aquí te va otro ejemplo

    Public Class Form1
    
        'Contador de espacios()
        Private contador As Integer = 1
        Private start As Integer = 0
        Private result As String
    
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            'comprobamos si hay mas de dos espacios y establecemos el contador en 2
            If TextBox1.Text.Contains("  ") Then
                contador = 2
                start = TextBox1.Text.Count
            End If
    
            'comprobamos si el contador es igual a dos si es a si que remplace los dos espacio por uno
            'y que el usuario no pueda agregar un espacio mas
            If contador > 1 Then
                result = TextBox1.Text.Replace("  ", " ")
                TextBox1.Text = result
                TextBox1.SelectionStart = start
                contador = 1
            End If
        End Sub
    
    End Class

    lunes, 5 de noviembre de 2018 20:31
  • Hola:

    "Solo una corrección J.Carlos, el código ASCII 8 es BackSpace no es Space, el Space (espacio) es el 32"

    Esta parte del código

    ' teclas adicionales permitidas
    If Asc(e.KeyChar) = 8 Then
        e.Handled = False

        es para permitir pulsar la tecla BackSpace para borrar el segundo Space

    Un saludo desde Bilbo
    Carlos

    martes, 6 de noviembre de 2018 7:07