Visual Basic - capitalizar letras

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 77 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

capitalizar letras

Publicado por informatic (2 intervenciones) el 17/09/2019 01:25:08
Hola tengo una funcion la cual hace que todo string obtenga la primera letra mayuscula
el error que tiene es que necesito que un texto sea asi "Hola Mundo" es decir siempre la primera en mayuscula

este es mi codigo

1
2
3
4
5
6
7
8
Function Primer_mayusc(Texto As String) As String
    Dim Largo As Byte
    Dim micadena As String
 
    Largo = Len(Texto) - 1
    Primer_mayusc = StrConv(Left(Texto, 1), vbUpperCase) & StrConv(Mid(Texto, 2, Largo), vbLowerCase)
 
End Function

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

capitalizar letras

Publicado por Antoni Masana (558 intervenciones) el 17/09/2019 07:02:42
No entiendo la explicación.

Supongo que lo que deseas es poner en mayúscula la primera letra de cada palabra.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function Primer_mayusc(Texto As String) As String
    Dim Palabras() As String, a As Integer
 
    Palabras = Split(Texto, " ")
    Primer_mayusc = ""
    For a = 1 To UBound(Palabras)
        Primer_mayusc = Primer_mayusc + UCase(Left(Palabras(a), 1)) + LCase(Mid(Palabras(a), 2)) & " "
    Next
    Primer_mayusc = RTrim(Primer_mayusc)
End Function
 
Sub Prueba()
    MsgBox Primer_mayusc("en un lugar de la mancha de cuyo nombre no quiero acordarme")
    MsgBox Primer_mayusc("EN UN LUGAR DE LA MANCHA DE CUYO NOMBRE NO QUIERO ACORDARME")
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

capitalizar letras

Publicado por gilman (359 intervenciones) el 17/09/2019 10:09:39
El código tiene un error, el bucle debería empezar en 0 ya que el primer elemento de los arrays en VB6 es por defecto ese.
Por otro lado si se quiere un mejor rendimiento se puede usar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Function Primer_mayusc(ByRef Entrada As String) As String
 
    Dim p As Long
    Dim lonStr As Long
    lonStr = Len(Entrada)
    If lonStr > 0 Then
        Primer_mayusc = LCase$(Entrada)
        Mid$(Primer_mayusc, 1, 1) = UCase$(Mid$(Primer_mayusc, 1, 1))
        p = 2
        p = InStr(p, Primer_mayusc, " ")
        While p > 0 And p < lonStr
            p = p + 1
            Mid$(Primer_mayusc, p, 1) = UCase$(Mid$(Primer_mayusc, p, 1))
            p = InStr(p, Primer_mayusc, " ")
        Wend
    End If
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

capitalizar letras

Publicado por Antoni Masana (558 intervenciones) el 17/09/2019 10:58:16
Saludos Gilman

Tienes razón se me olvido el primer elemento y desde luego hay muchas formas de hacer lo mismo. Es lo bueno o malo de la programación.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Richard
Val: 20
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

capitalizar letras

Publicado por Richard (6 intervenciones) el 18/09/2019 21:19:20
Lo mas sencillo que puedes hacer:

1
2
3
4
5
6
7
Imports System.Globalization
 
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(TextBox1.Text)
    End Sub
End Class


o puedes utilizar solo esta linea:

1
Label1.Text = StrConv(TextBox1.Text, VbStrConv.ProperCase)


resultado


foto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de gilman
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

capitalizar letras

Publicado por gilman (359 intervenciones) el 20/09/2019 08:22:57
A ver si aprendemos donde posteamos.
Este es un subforo de VB, para VB.Net hay otro.
Los códigos que muestras no funcionarán en VB6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar