Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Matriz De Caracteres De Una Cadena De Texto
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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.

Public Function SerialString(str As String) As String[] '' Función que devuelve una matriz de texto de una cadena donde cada ítem es un caracter de esta.
  
  Dim stxOut As New String[]
  Dim int As Integer
  
  stxOut.Clear
  
  For int = 1 To String.Len(str)
    stxOut.Add(String.Mid(str, int, 1))
  Next
  
  Return stxOut
  
End
 


Dejo también un ejemplo de su uso.

Saludos.

ejemplo-matriz-de-palabra-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-matriz-de-palabra-0.0.1.tar.gz
Tamaño: 11.35 KB
Descargado: 34 veces
ejemplo-matriz-de-palabra-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-matriz-de-palabra-0.0.1.tar.gz
Tamaño: 11.35 KB
Descargado: 34 veces
ejemplo-matriz-de-palabra-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: ejemplo-matriz-de-palabra-0.0.1.tar.gz
Tamaño: 11.35 KB
Descargado: 34 veces

 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Matriz De Caracteres De Una Cadena De Texto 
 
Shell escribió: [Ver mensaje]
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[ ].

Public Sub Main()

  Dim s As String
  Dim bb As Byte[]
  
  s = "El Número máximo de usuarios conectados..."
  
  bb = Byte[].FromString(s)
  
  Print bb.ToString(0, bb.Count)

End

.......sin bucle !    
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Matriz De Caracteres De Una Cadena De Texto 
 
Shell escribió: [Ver mensaje]
... no los caracteres en si.

...que crees que sean los "caracteres" ?  



Shell escribió: [Ver mensaje]
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.
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.

Private acaracteres As New String[]

Public Sub Main()
  
  Dim cadena As String
  
  cadena = "Camión"
  
  CreaArrayDeCaracteres(cadena)
  Stop
  
End

Public Function CreaArrayDeCaracteres(scad As String, Optional n As Integer = 0)
  
  If n < String.Len(scad) Then
    ''FIXME: Necesidad de array global
    acaracteres.Add(String.Mid(scad, n + 1, 1))  
    CreaArrayDeCaracteres(scad, n + 1)
  Endif
  
End  
 


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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
cogier - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Cadena A Matriz [SOLUCIONADO] skhaliburg General 3 Sabado, 25 Septiembre 2010, 19:06 Ver último mensaje
jsbsan
No hay nuevos mensajes ¿cual Es La Longitud Maxima De Una Cadena... jsbsan General 9 Jueves, 19 May 2011, 22:01 Ver último mensaje
Ronny
No hay nuevos mensajes VideoConferencia En Hangouts: Ejemplo De U... jsbsan General 11 Lunes, 04 Abril 2016, 19:48 Ver último mensaje
jsbsan
No hay nuevos mensajes Matriz Led Para Scroll De Texto sos-fan Aplicaciones/Fragmentos de Código 2 Jueves, 29 Diciembre 2016, 00:21 Ver último mensaje
jguardon
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron