Determinar el Numero de veces que se repite un caracter en una cadena

Estimados Amigos
Xojo

Agradecerles por sus respuestas y que sern muy apreciadas.

Existe alguna funcin de cadena (string) o mtodo, que me permita obtener el numero de veces que un carcter se repite en una cadena?

por ejemplo, si tengo la siguiente cadena:

s= “124/999/9976/909900/98”

Para este caso, si el carcter a buscar es / en la cadena s, el resultado a devolver es 4

Cordialmente

Raul
Peru

Hola Raúl,

La siguiente es una de las soluciones posibles. Es un método que devuelve un diccionario utilizando como claves (Key) cada uno de los caracteres de la cadena, y como valor la cantidad de veces que se repite. Luego sólo tienes que acceder a la clave en cuestión para conocer la cantidad de repeticiones para un caracter determinado.

Eso sí, ten en cuenta que has de pasar la clave como tipo de dato Text (no String), de lo contrario obtendrás un error “Key Not Found” (creo que es algo que debería de resolverse en Xojo).

[code]Function countCharacters(t as Text) As Dictionary
dim d as new Dictionary

for each c as Text in t.Characters
if d.HasKey© then
d.Value© = d.Value©.IntegerValue + 1
else
d.Value© = 1
end if
next

Return d
End Function[/code]

Si quieres que pase a formar parte de tu arsenal… añade un módulo e incluye en él el siguiente método como extensión de la clase Text:

[code]Function countCharacters(extends t as Text, char as Text) As integer
dim d as new Dictionary

for each c as Text in t.Characters
if d.HasKey© then
d.Value© = d.Value©.IntegerValue + 1
else
d.Value© = 1
end if
next

Return d.Value(char)
End Function[/code]

Aquí podrás pasar directamente el caracter en el que estés interesado y te devolverá la cantidad de repeticiones.

Javier Rodríguez
Evangelista Xojo en Español, Desarrollador, Consultor y Formador Xojo
Autor del libro “Programación Multiplataforma Xojo
Autor del plug-in GuancheMOS para Xojo
Snippery para OS X: editor y gestor de fragmentos… ¡y más!

Otra posibilidad:

[code]Function countCharacters(FindChar as Text, SearchString as Text) As Integer
Dim arr() as String

arr = Split(SearchString,FindChar)
Return UBound(arr)

End Function
[/code]

Estimado
Peter Rodwell

He probado el cdigo y funciona correctamente
Muchas gracias por disponer de tu tiempo y compartir tus conocimientos, pensando en ayudar a los dems

Saludos y Bendiciones

Raul Juarez Pulache

Hola Raul.

Otra opcin.

Function countCharacters(t as Text, char as Text) As integer

 Return t.Len - t.ReplaceAll(char, "").Len 

End Function

Saludos.
Mauricio

Hola.

Disculpas, la funcin recibe parmetros tipo string

Function countCharacters(t As string, char As string) As integer

Return t.Len - t.ReplaceAll(char, “”).Len
End Function

Saludos.
Mauricio

Muchas Gracias
Mauricio

Por tu gran ayuda, la funcin es forma muy practica e inteligente para contar los caracteres que se repiten

Un Abrazo

Raul Juarez Pulache