Saber cuantas veces aparece una letra
Necesito saber cuantas veces aparece una letra en una cadena , como puedo hacer para saberlo?
Por ejemplo:
Cadena = "Hola Mundo"
Letra O aparece 2 veces
Por ejemplo:
Cadena = "Hola Mundo"
Letra O aparece 2 veces
InStr([inicio, ]cadena1, cadena2[, comparación])
te devuelve el número de veces que aparece la letra. En cadena1 metes la cadena en la que quieres buscar, por ejemplo "Hola Mundo" o text1.text. En cadena2 metes la subcadena a buscar (uno o más caracteres). Por ejemplo "o", "do", "Ho". Inicio lo usas sólo si quieres indicar en que posición de la cadena comenzar a buscar. comparación puede ser binaria (0) o de texto (1). Espero que esto te haya ayudado. Suerte.
te devuelve el número de veces que aparece la letra. En cadena1 metes la cadena en la que quieres buscar, por ejemplo "Hola Mundo" o text1.text. En cadena2 metes la subcadena a buscar (uno o más caracteres). Por ejemplo "o", "do", "Ho". Inicio lo usas sólo si quieres indicar en que posición de la cadena comenzar a buscar. comparación puede ser binaria (0) o de texto (1). Espero que esto te haya ayudado. Suerte.
No no, lo que te devuelve es la primera posisión de cadena2 dentro de la cadena1. qué confusión! Puedes usarlo introdusiendo la posisión en que la encontró cada vez como posisión de inissio, y así hasta que no la encuentre más veses (instr devuelve 0), tonses con esee bucle sabes las veses que la encontró :P Pero la verdá es que debe haber una funsión para eso ¿no? Aunque yo he mirado en el examinador de objetos y no la he encontrado. adiooooosssssss
no sé si hay alguna función propia (creo que no), pero puedes probar con un For o bién con Split:
Dim Cont As Long
Dim nVeces As Long
For Cont = 1 to Len(Cadena)
If Mid(Cadena, Cont, 1) = Letra Then nVeces=nVeces+1
Next
MsgBox "La letra " & Letra & " ha salido " & nVeces & " veces"
Con Split sería:
Dim Corte() As String
Corte=Split(Cadena, Letra)
MsgBox "La letra " & Letra & " ha salido " & UBound(Corte) & " veces"
Saludos.
Dim Cont As Long
Dim nVeces As Long
For Cont = 1 to Len(Cadena)
If Mid(Cadena, Cont, 1) = Letra Then nVeces=nVeces+1
Next
MsgBox "La letra " & Letra & " ha salido " & nVeces & " veces"
Con Split sería:
Dim Corte() As String
Corte=Split(Cadena, Letra)
MsgBox "La letra " & Letra & " ha salido " & UBound(Corte) & " veces"
Saludos.