none
Contar caracteres em uma frase RRS feed

  • Pergunta

  •  

    Senhores,

    bom dia.

     

    Estou precisando de uma função que conte um determinado caracterer em uma frase.

     

    Por ex:

     

    "O gato roeu a roupa do rei de roma".

     

    Se eu solicitasse a letra "A", ele me retornaria 4.

     

    "o gAto roeu A roupA do rei de romA".

     

    Eu já fiz isso a um tempo atras, só que não estou conseguindo fazer novamente.

     

    Me lembro que devemos utilizar o len() mas não estou muito certo disso.

     

     

    Conto com a ajuda dos Srs!

     

    Grato.

     

    Jardyson Melo

    segunda-feira, 29 de setembro de 2008 14:04

Respostas

  •  Jardyson,

     

    Minha sugestão:

     

    Code Snippet

    Dim strFrase As String = "O gato roeu a roupa do rei de roma"

    Dim strLetra As String = "A"

    Dim intTotalLetras As Integer = 0

     

    For intI As Integer = 1 To strFrase.Length

    If Mid(strFrase, intI, 1).ToUpper = strLetra.ToUpper Then

    intTotalLetras += 1

    End If

    Next intI

     

    MsgBox(intTotalLetras)

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    segunda-feira, 29 de setembro de 2008 14:28
  • Eu tinha entendido errado.. Uso esta função

     

     

    Code Snippet

    Function ContaString(TextoBase$, StringAcha$) As Long
        ContaString = 0
        If StringAcha = "" Then
           MsgBox "Erro: Contador de Strings igual a nulo...", vbCritical, "Erro"
           Exit Function
        End If
        Dim Posição&
        Posição = 1
        Do While True
           If InStr(Posição, TextoBase, StringAcha) > 0 Then
              ContaString = ContaString + 1
              Posição = InStr(Posição, TextoBase, StringAcha) + Len(StringAcha)
           Else
              Exit Do
           End If
        Loop
    End Function

     

     

     

    Code Snippet

    Sub Teste()
    Dim texto$
    texto = "O gato roeu a roupa do rei de roma"
    MsgBox ContaString(texto, "a")

    End Sub

     

     

    Até..
    segunda-feira, 29 de setembro de 2008 14:34

Todas as Respostas

  • Olá

     

    A função  InStr te retorna a posição do caracter

    O texto é a variável que possui a sua frase...O "A" é a string que está procurando...

    O 1 é o start =define a posição inicial da pesquisa..

     

    Code Snippet
    InStr(1, texto, "a")

     

     

    Até..
    segunda-feira, 29 de setembro de 2008 14:17
  •  Jardyson,

     

    Minha sugestão:

     

    Code Snippet

    Dim strFrase As String = "O gato roeu a roupa do rei de roma"

    Dim strLetra As String = "A"

    Dim intTotalLetras As Integer = 0

     

    For intI As Integer = 1 To strFrase.Length

    If Mid(strFrase, intI, 1).ToUpper = strLetra.ToUpper Then

    intTotalLetras += 1

    End If

    Next intI

     

    MsgBox(intTotalLetras)

     

     

    Ajude a melhorar o nosso Fórum!
    Não esqueça de marca a mensagem como "útil", caso tenha ajudado.

     

    segunda-feira, 29 de setembro de 2008 14:28
  • Eu tinha entendido errado.. Uso esta função

     

     

    Code Snippet

    Function ContaString(TextoBase$, StringAcha$) As Long
        ContaString = 0
        If StringAcha = "" Then
           MsgBox "Erro: Contador de Strings igual a nulo...", vbCritical, "Erro"
           Exit Function
        End If
        Dim Posição&
        Posição = 1
        Do While True
           If InStr(Posição, TextoBase, StringAcha) > 0 Then
              ContaString = ContaString + 1
              Posição = InStr(Posição, TextoBase, StringAcha) + Len(StringAcha)
           Else
              Exit Do
           End If
        Loop
    End Function

     

     

     

    Code Snippet

    Sub Teste()
    Dim texto$
    texto = "O gato roeu a roupa do rei de roma"
    MsgBox ContaString(texto, "a")

    End Sub

     

     

    Até..
    segunda-feira, 29 de setembro de 2008 14:34
  • Senhores,

    obrigado.

     

    segunda-feira, 29 de setembro de 2008 23:06