Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

añadir un caracter a un string

Estas en el tema de añadir un caracter a un string en el foro de Visual Basic clásico en Foros del Web. hola buenas! haber si me pueden echar una manita con el siguiente tema: tengo una serie de ecuaciones de este tipo: "D1@Croquis1=(A/2)+134"; "D2@Croquis1=150-A";"D3@Croquis1=A";"A=100"... tengo que ...
  #1 (permalink)  
Antiguo 10/02/2009, 07:04
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
añadir un caracter a un string

hola buenas!
haber si me pueden echar una manita con el siguiente tema:
tengo una serie de ecuaciones de este tipo: "D1@Croquis1=(A/2)+134"; "D2@Croquis1=150-A";"D3@Croquis1=A";"A=100"...
tengo que sustituir la variable A por Ae; es decir, "D1@Croquis1=(Ae/2)+134"...
suponiendo q la ecuacion la guardo en una variable tipo string he exo algunas pruebas pero no llego a nada.

a="D1@Croquis1=(A/2)+134"
If InStr(a, "@") <> 0 Then 'solo me coje las ecuaciones D1@Croquis1=(A/2)+134
iPos = InStr(1, a, "=")' buscar la posición del caracter "="
b = Right(a, Len(a) - iPos) ' parte derecha del signo igual
vPos = InStr(1, b, "A")'saco la posicion de A
Else 'solo me coje las ecuaciones tipo A=100.

mi problema es que no se como añadir un caracter. el problema es q las ecuaciones las tengo q modificar via codigo no puedo borrarlas y volver a escribirlas.

espero q me puedan ayudar!
mil gracias!
saludos!
  #2 (permalink)  
Antiguo 10/02/2009, 07:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: añadir un caracter a un string

¿Y si usas Replace?
Código vb:
Ver original
  1. Replace("Texto", "A", "Ae")
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/02/2009, 09:02
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: añadir un caracter a un string

gracias, no habia caido!

ahora tengo otro problemilla, necesito meter comilas.

"A"=100-->""A""=100
"D2@Croquis1" = "A"-->"""D2@Croquis1"" = ""A"""

se podrian meter espacios al principio, al final y entre = y luego replace con las ". pero cuando tengo numeros no tengo q meter ", como en ""A""=100.

habria q mover los caracteres unas posiciones determinadas a la derecha para luego en esos espacios libres poder meter las comillas? no se, igual me estoy comiedo la olla demasiado.. sq no tengo ni idea...

agradezco mucho vuestra ayuda!
  #4 (permalink)  
Antiguo 10/02/2009, 13:08
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: añadir un caracter a un string

Qué tal?

Si lo he entendido bien, lo que quieres hacer es, para cada ecuación, entrecomillar las expresiones a ambos lados del símbolo "=" salvo que se trate de un número... en ese caso:

Código:
Dim Expr()  As String

    Expr = Split(<variable_ecuacion>, "=")

    If Ubound(Expr)<>1 Then  ' Comprobamos que sólo hay un símbolo "="
        MsgBox "Error de sintaxis"
    Else
        If Not IsNumeric(Expr(0)) Then Expr(0) = """" & Expr(0) & """"
        If Not IsNumeric(Expr(1)) Then Expr(1) = """" & Expr(0) & """"

        <variable_ecuacion> = Join(Expr, "=")
    End If
Sustituye "<variable_ecuación>" por tu variable, o mete este código en una función y te servirá para cada ecuación por separado.

Creo que es bastante sencilla, pero pregunta si no ves algo
__________________
wile sona li mute e sona
  #5 (permalink)  
Antiguo 11/02/2009, 02:24
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: añadir un caracter a un string

gracias por tu ayuda. es un codigo simple y efectivo.
pero parece q mi problema no termina...
el caso es q puedo tener las siguientes ecuaciones:

D2@Croquis1 = 785-A -->"""D2@Croquis1"" = 785-""A"""
D3@Croquis1 = (B-27.3)/2-->"""D3@Croquis1"" = (""B""-27.3)/2"
D4@Croquis1 = ((3*C)/2)+56-->"""D4@Croquis1"" = ((3*""C"")/2+56" ...

he pensado en usar otra vez la funcion tuya de Expr = Split(<variable_ecuacion>, "=") y en vez de poner el signo = tendria q poner todas ls opciones:+,-,*,/,(,)... no se si hay algun nombre o algo q englobe todos estos caracteres.

saludos!
  #6 (permalink)  
Antiguo 11/02/2009, 16:55
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: añadir un caracter a un string

Pues nop, hasta donde yo se, no hay una función tan específica... no te queda otra que comprobar la cadena caracter a caracter e ir poniendo comillas según detectes que comienza o acaba una expresión de sólo letras.

Te propongo esta función, que es un poco salvaje en el sentido de que hace un uso abusivo de Replace, pero simplifica mucho el algoritmo (aunque no lo he comprobado, probablemente incluso sea más rápida que comprobar caracter a caracter), como puedes ver:

Código:
Public Function EntrecomillaAlfa(ByVal wExpr As String) As String
Dim i  As Long
Dim Symbol As String
Dim wa As String * 1

    Symbol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    For i = 1 To Len(Symbol)
        wa = Mid(Symbol, i, 1)
        If InStr(1, wExpr, wa, vbTextCompare) > 0 Then
            wExpr = Replace(wExpr, wa, Chr(0) & (wa & Chr(0)), , , vbTextCompare)
            ' (Deja los paréntesis que parece que sobran, es una pequeña optimización)
        End If
    Next i
    
    If InStr(1, wExpr, Chr(0)) > 0 Then
        EntrecomillaAlfa = Replace(Replace(wExpr, Chr(0) & Chr(0), vbNullString), Chr(0), """")
    Else
        EntrecomillaAlfa = wExpr
    End If
End Function
Ventajas:
- Devuelve entrecomilladas todas las secuencias de cualquier combinación y longitud de caracteres que pongas en la variable Symbol (puedes incluso ponerla como un parámetro opcional para darle más potencia)
- Es muy fácil de ampliar o personalizar (supón que un día también necesites entrecomillar la "ñ", o el punto, o que no quieres incluir la letra "e" para utilizarla como constante); sólo tienes que añadir o quitar los caracteres que quieras a Symbol.

Desventajas:
- Tal y como está definida, convierte todos los caracteres a entrecomillar a como estén escritos en Symbol (a mayúsculas en este caso: EntrecomillaAlfa("ABC-(32/J)+a") devuelve "ABC"-(32/"J")+"A"), aunque esto se puede solucionar con pocos cambios.
- Las funciones matemáticas también se encerrarán entre comillas (EntrecomillaAlfa("cos(32-B)" = "COS"(32-"B")). Habría que hacer algunas comprobaciones antes de este algoritmo para evitarlo, pero no es complicado.

Notas:
- Si tus expresiones nunca van a tener más de una letra, puedes eliminar la última condición y devolver directamente wExpr, para optimizar un poco más.
- Si las expresiones de entrada ya tienen comillas, en el resultado te las va a duplicar, así que deberías poner algún control antes para quitarlas... eso te lo dejo a tí

Pregunta todas tus dudas... reconozco que es un código un poco... particular...
__________________
wile sona li mute e sona
  #7 (permalink)  
Antiguo 13/02/2009, 08:14
ebu
 
Fecha de Ingreso: noviembre-2008
Mensajes: 153
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: añadir un caracter a un string

gracias por tu ayuda Txoco! te has tomado muchas molestias!
de momento si me vale tu codigo, si le hago alguna modificacion o algo os pondre al corriente!
muchas gracias! saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:48.