QTDE DE CARACTER DENTRO DA UMA STRING
Apenas abri este tópico para fazer um comentário a respeito do tópico homà 'nimo anterior.
Bem, uma solução encontrada foi usar o FOR. Porém o usuário que criou o tópico perguntou a respeito do tempo de processamento para dados maiores. Então disseram para usar o REPLACE, que foi a resposta escolhida. Porém eu fiz alguns testes e conclui que o bom e velho FOR é mais rápido que o REPLACE, ao contrário do que fica sugerido no outro tópico.
Vejam:
(o arquivo que utilizei para os testes está em anexo)
Bem, uma solução encontrada foi usar o FOR. Porém o usuário que criou o tópico perguntou a respeito do tempo de processamento para dados maiores. Então disseram para usar o REPLACE, que foi a resposta escolhida. Porém eu fiz alguns testes e conclui que o bom e velho FOR é mais rápido que o REPLACE, ao contrário do que fica sugerido no outro tópico.
Vejam:
Dim Texto As String
Dim Tempo(1 To 2) As Double
Dim Letras(1 To 2) As Double
Open app.path & " este.txt" For Binary As #1
Texto = UCase(Input(LOF(1), 1))
Close #1
Tempo(1) = Timer
For i = 1 To Len(Texto)
If Mid(Texto, i, 1) = "A" Then Letras(1) = Letras(1) + 1
Next
Tempo(1) = Timer - Tempo(1)
Tempo(2) = Timer
Letras(2) = Len(Texto) - Len(Replace(Texto, "A", ""))
Tempo(2) = Timer - Tempo(2)
MsgBox "O processo com o FOR demorou " & Tempo(1) & "s" & vbCrLf & "Já o processo com o REPLACE demorou " & Tempo(2) & "s", vbInformation, "Letras: " & Letras(1) & " // " & Letras(2)
(o arquivo que utilizei para os testes está em anexo)
Caro HARRY POTTER terei que concordar com você, em um arquivo muito grande, o nosso for é mais rapido mesmo, mais o mesmo codigo seu com uma frase só "A ligeira raposa marrom ataca o cão preguiçoso." o Replace foi a mesmo coisa em alguns momentos e mais rapidos em outros... Sem alterar nada... so fiz teste sucessivos...
Então acho que o programador terá que saber qual a melhor solução para ele.
Até mais HARRY POTTER, e valeu pelo teste.
Então acho que o programador terá que saber qual a melhor solução para ele.
Até mais HARRY POTTER, e valeu pelo teste.
Tópico encerrado , respostas não são mais permitidas