Autor |
Mensaje |
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Matriz De Caracteres De Una Cadena De Texto
Hola a todos.
A raíz de otro hilo sobre desorden de letras, se me ocurrió investigar el asunto y no encontré una función que haga tal cosa.
Si alguien sabe de alguna que lo comente por favor.
De momento hice esta función que lo hace y la propongo y por supuesto es mejorable.
Dejo también un ejemplo de su uso.
Saludos.
Descripción: |
|
Descargar |
Nombre del archivo: |
ejemplo-matriz-de-palabra-0.0.1.tar.gz |
Tamaño: |
11.35 KB |
Descargado: |
34 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
ejemplo-matriz-de-palabra-0.0.1.tar.gz |
Tamaño: |
11.35 KB |
Descargado: |
34 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
ejemplo-matriz-de-palabra-0.0.1.tar.gz |
Tamaño: |
11.35 KB |
Descargado: |
34 veces |
|
#1 Jueves, 13 Septiembre 2018, 10:18 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Matriz De Caracteres De Una Cadena De Texto
Tincho:
Tu función es perfectamente valida. Es breve y efectiva. No creo que en gambas se pueda hacer de otra forma como no sea mediante bucle.
Python en este caso es distinto y si existe un método. Que es la conversión de una cadena a una lista (podríamos llamarlo array).
La forma es muy sencilla.
Citar:
>>> lista_de_caracteres = list('palabra')
>>> lista_de_caracteres
['p', 'a', 'l', 'a', 'b', 'r', 'a']
Nosotros no vemos lo que hace eso internamente. Pero, ¿ quien sabe si lo que hace es un bucle ?.
Lógicamente solo funciona con algo que sea una secuencia. No funcionaria con un número.
Ahora intenta añadir ese método o función que has creado a una clase que herede la clase array nativo de gambas.
Posiblemente no se pueda.
Debería ser algo genérico, pero solo funcionaría con cadenas de caracteres.
Visto eso, se debería ver de la clase gambas el array nativo padre y como van heredando de este sus derivados, con cadenas, con números, etc.
Como idea es interesante.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Jueves, 13 Septiembre 2018, 13:29 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Matriz De Caracteres De Una Cadena De Texto
No creo que en gambas se pueda hacer de otra forma como no sea mediante bucle.
Si el objetivo es - en sustancia - obtener un array de datos ASCII, es mejor usar el Objeto Array de tipo Byte[ ].
.......sin bucle !
|
#3 Jueves, 13 Septiembre 2018, 17:58 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Matriz De Caracteres De Una Cadena De Texto
Vuott:
Cuando no se usa una cosa se desconoce. El uso de byte lo tengo muy limitado.
Supongo que por C le das mucho uso.
Citar:
.......sin bucle !
bb = Byte[].FromString(s)
Es muy rápido, pero el problema es que obtienes un array de cada código Ascii de cada carácter, no los
caracteres en si. Entonces para saber luego lo que es cada carácter, no te libra de que tengas que usar un bucle
o repetir
Print bb.ToString(Indice, Longitud)
Y por otra parte los caracteres con tildes estarán limitados si solo es Asciii.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#4 Jueves, 13 Septiembre 2018, 19:17 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Matriz De Caracteres De Una Cadena De Texto
... no los caracteres en si.
...que crees que sean los "caracteres" ?
Entonces para saber luego lo que es cada carácter, no te libra de que tengas que usar un bucle
El problema puesto por tincho no es esto.
|
#5 Jueves, 13 Septiembre 2018, 22:47 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Matriz De Caracteres De Una Cadena De Texto
Vuott:
Citar:
...que crees que sean los "caracteres" ?
Aunque su código sea un número, lo que creo que le interesa son letras no números.
El problema es convertir luego esos códigos numéricos. Bucle..que eso no se puede hacer "tan bien" como en Python. jejeje.
Y seguramente tampoco se puede hacer en "C".
Aunque en "C" creo que existe el tipo char. Y si se puede, a añadir otra extern en gambas.
Citar:
El problema puesto por tincho no es esto.
A Tincho le interesa convertir una cadena en un array de caracteres.
Ademas, aunque los conviertas al número que representa en ascii . Convierte por ejemplo una palabra con "tilde" ascii con 256 valores a ver si puedes.
Saludosssss
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#6 Viernes, 14 Septiembre 2018, 08:43 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Matriz De Caracteres De Una Cadena De Texto
Si seria interesante que existiera en gambas la posibilidad de partir cadenas de texto caracter por caracter.
Podría hacerse extendiendo Split o String
Saludos.
|
#7 Viernes, 14 Septiembre 2018, 10:13 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Matriz De Caracteres De Una Cadena De Texto
Tincho:
Citar:
Podría hacerse extendiendo Split o String
Eso fue lo primero que se me ocurrió hace tiempo. Quizás para split seria bastante complejo.
Seria una mezcla entre un formato y la sentencia split.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#8 Viernes, 14 Septiembre 2018, 12:22 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Matriz De Caracteres De Una Cadena De Texto
Buenas!.
Hice una prueba con una función recursiva pero parece indispensable el array global donde se almacenan los caracteres.
A lo mejor una función recursiva no puede devolver un array. Por ejemplo si es declarado en su interior
se va a volver a inicializar cada vez que se ejecute la función.
Como parámetro de entrada puede.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#9 Lunes, 17 Septiembre 2018, 00:53 |
|
|
cogier
Charlie Ogier
Aprendiz
Registrado: Septiembre 2018
Mensajes: 99
Edad: 69 Ubicación: Guernsey, Channel Islands
|
Re: Matriz De Caracteres De Una Cadena De Texto
¿Esto ayudará?
Public Sub Main()
Dim sList As String[] = ["café", "día", "sofá", "miércoles", "sábado", "cuántos", "dóndé", "español", "canción", "también", "éêĕåăőŏȫṑȎǘüùĝǵḵḱȥžỷẵḀẴ", "gambas Almost Means Basic"]
Dim sTemp As String
For Each sTemp In sList
Print sTemp & " - " & Random(sTemp)
Next
End
Public Sub Random(sString As String) As String
Dim siCount As Short
Dim sResult As String
Dim sWork As New String[]
For siCount = 1 To Len(sString)
sWork.Add(String.Mid(sString, siCount, 1))
Next
For siCount = 1 To Len(sString)
sResult &= sWork.Extract(Rand(0, sWork.max))[0]
Next
Return sResult
End
día - daí
sofá - sofá
miércoles - rliceosém
sábado - sboáad
cuántos - tnucáso
dóndé - ddénó
español - oelapsñ
canción - óaccnin
también - bnmtiaé
éêĕåăőŏȫṑȎǘüùĝǵḵḱȥžỷẵḀẴ - üŏőḀǵȥẵĕỷêȎåéẴăȫùḱǘĝžḵṑ
gambas Almost Means Basic - a miatG aAnscasMmlssobe B
|
#10 Lunes, 17 Septiembre 2018, 17:22 |
|
|
|