| ID | Asunto | Fecha | Nick | |
| 40435 | problema con cadena de caracteres | 15/04/08 22:38 | Ishito | |  |
buenas, les cuento lo que quiero hacer a ver si me pueden ayudar porque sinceramente no puedo hacerlo. Quiero hacer lo siguiente quiero asignar un numero a cada letra del abecedario es decir a la a=01, b=02, y asi hasta la "z". Y en definitiva lo que quiero que haga la aplicacion es que lo que escriba en un text box me lo pase a otro textbox pero ya con los numeros que le corresponde a cada caracter. por ejemplo la palabra "mama" estaria conformado asi "13011301" eso es lo que necesito. Espero alguien pueda ayudarme desde ya muchas gracias. Espero haber sido claro en lo que necesito. |
|
| ID | Asunto | Fecha | Nick | |
| 40443 | Re: problema con cadena de caracteres (Resp: 40435) | 16/04/08 08:14 | Naiet | | |
Pues crea un bucle que recorra la cadena caracter a caracter y luego coges el valro ascii de la letra y le aplicas la conversión pertinente Esta función recibe una cadena y la transforma como tu quieres, sólo acepta valores de la "a" a la "z". Omite el resto, para ellos puedes pensar otra conversión, las mayúsculas, números o signos varios. Es cuestión de ampliar la funcioncilla esta. No lo he probado, lo mismo tiene alguna errata. tu mismo Public Function
conversion(ByVal sCadenaOrigen As String) As String
Dim i As Integer, sLetra As String, sNum As String, sResultado As
String
sResultado = ""
For i = 1 To Len(sCadenaOrigen)
sLetra = Mid(sCadenaOrigen, i, 1)
If Asc(sLetra) > Asc("a") And Asc(sLetra) <
Asc("z") Then
sNum = Format(Asc(sLetra) - Asc("a") + 1, "00")
sResultado = sResultado & sNum
End If
Next
conversion = sResultado
End Function
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40444 | Re: problema con cadena de caracteres (Resp: 40435) | 16/04/08 08:26 | juanjoa | |  |
También lo puedes hacer directamente en el evento KeyPress. En este ejemplo, según escribes en el Text1 va pasando los números al Text2 y controlando que lo que se escribe sea siempre letras de la A a la Z (mayúsculas y minúsculas tienen el mismo número) Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim Clave As Integer
Select Case KeyAscii
Case 65 To 90 ' caracteres A-Z (mayúsculas)
Clave = KeyAscii - 64
Text2 = Text2 & Format(Clave, "00")
Case 97 To 122 ' caracteres a-z (minúsculas)
Clave = KeyAscii - 96
Text2 = Text2 & Format(Clave, "00")
Case 8 ' tecla retroceso, eliminamos el último nº del Text2
If Text2.Text <> "" Then Text2.Text = Left(Text2, Len(Text2) - 2)
Case Else ' cualquier otro caracter no se imprime
KeyAscii = 0
End Select
End SubUn saludo
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40461 | Re: problema con cadena de caracteres (Resp: 40444) | 16/04/08 14:43 | Ishito | | |
hola que tal? me fue espectacular con tu ayuda lo unico es que no puedo representar la letra "ñ" ¿me ayudarias con eso? muchisimnas gracias. Un saludo.
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 40466 | Re: problema con cadena de caracteres (Resp: 40435) | 16/04/08 15:29 | juanjoa | | |
El problema con la eñe sería, qué número tendría, ¿el último, o después de la ene? porque si es lo segundo el código no valdría. Te propongo otra forma de hacerlo: Option Explicit
Option Compare Text '
instrucción para comparar a = A, b = B, c = C, etc..
Dim a() As String ' Array donde guardaremos las letras
Private Sub Form_Load()
Dim Cadena As String
Cadena = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,x,y,z"
a = Split(Cadena, ",") ' guardamos en el array cada una de las letras
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim i As Integer
Select Case KeyAscii
Case 8
If Text2.Text <> "" Then Text2.Text = Left(Text2, Len(Text2) - 2)
Case 65 To 90, 97 To 122, 209, 241
' letras mayúsculas, minúsculas y ñ-Ñ
For i = LBound(a) To UBound(a)
' recorremos el array de principio a fin
If Chr(KeyAscii) = a(i) Then
' encontró el caracter, le sumamos una unidad al índice del
' array porque el primero es cero.
Text2 = Text2 & Format(i + 1, "00")
' salimos del bucle
Exit For
End If
Next i
Case Else ' cualquier otro caracter no se imprime
KeyAscii = 0
End Select
End SubNota: Las vocales acentuadas no las vá a considerar. Un saludo. [Editado: juanjoa, 16/04/2008 15:35:22]
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |