Ayuda con expresiones regulares ¡¡¡ Por favor !!!

13/03/2006 - 12:14 por Esteban | Informe spam
Hola amig@s; tengo el siguiente problema, a ver si hay por aqui un experto
en expresiones regulares

Tengo la siguiente cadena de texto:

13/03/2006 3818 + 600,00 + 1.197,00 13/03/2006 TAMANNA HASINA HUQUE + 100,00
+ 1.197,00 13/03/2006 PC1679-REGUL - 250,00 + 1.543,00 . etc

Bueno, como veis tengo una cadena que sigue un patron y esto lo tengo que
separar por campos. Como sigue:

Fecha
Código cliente (número y/o texto sin un ancho fijo, puede incluir signos)
Número con signo (pero hay un espacio entre el signo y el número y luego
tiene dos decimales)
Número con signo (pero hay un espacio entre el signo y el número y luego
tiene dos decimales)

No se si lo que pido es muy complicado, desde luego para mi que nunca me he
enfrentado a las expresiones regulares sí que lo es.

Quedaría muy agradecido si alguine me hecha una mano.

Gracias de antemano

Esteban

Preguntas similare

Leer las respuestas

#1 Harold V
13/03/2006 - 17:10 | Informe spam
Prueba esto...

Dim s, s1, Str, fecha, codigo, Numsigno1, Numsigno2 As String
Dim posi, x, j As Integer
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click

Str = "13/03/2006 TAMANNA HASINA HUQUE + 100,00 + 1.197,00"

j = InStr(1, Str, " ", CompareMethod.Text)
fecha = Trim(Mid(subC, 1, j))

s = Trim(Mid(Str, j, Str.Length))
x = InStr(1, s, "+", CompareMethod.Text)
codigo = Trim(Mid(s, 1, x - 1))

s1 = Trim(Mid(s, x, s.Length))
posi = InStrRev(s1, "+")
Numsigno1 = Mid(s1, 1, s1.Length - posi)
Numsigno2 = Mid(s1, posi, s1.Length)

el resultado lo tienes en variables como: fecha,codigo,
numsigno1,numsigno2
solo llama alas variables y listo..
End Sub
Respuesta Responder a este mensaje
#2 Esteban
14/03/2006 - 07:58 | Informe spam
Hola Harold V.:

Muchas gracias por tu ayuda, de todas formas creo que no me vale, pues las
cadenas que contienen los datos tienen un número indeterminado de registros
sin ningun tipo de caracter especial que los delimite; además puedo
encontrar caracteres como el signo + dentro del código de cliente como
signos - en la cifras.

Es por ello que pensaba en las expresiones regulares. Aunque me ha venido
bien, pues no conocia el comando InStrRev

Muchas gracias, un saludo

Esteban



"Harold V" escribió en el mensaje
news:
Prueba esto...

Dim s, s1, Str, fecha, codigo, Numsigno1, Numsigno2 As String
Dim posi, x, j As Integer
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click

Str = "13/03/2006 TAMANNA HASINA HUQUE + 100,00 + 1.197,00"

j = InStr(1, Str, " ", CompareMethod.Text)
fecha = Trim(Mid(subC, 1, j))

s = Trim(Mid(Str, j, Str.Length))
x = InStr(1, s, "+", CompareMethod.Text)
codigo = Trim(Mid(s, 1, x - 1))

s1 = Trim(Mid(s, x, s.Length))
posi = InStrRev(s1, "+")
Numsigno1 = Mid(s1, 1, s1.Length - posi)
Numsigno2 = Mid(s1, posi, s1.Length)

el resultado lo tienes en variables como: fecha,codigo,
numsigno1,numsigno2
solo llama alas variables y listo..
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida