Limpiar string

22/07/2009 - 19:59 por Pintamono | Informe spam
Que tal,

tengo un problema con lo siguiente...

Via socket recibo un texto y en algunas ocasiones recibo ademas de la
respuesta esperada un valor "\0" esto se supone que es el fin de linea
pero no hallo como sacarlo...

Mi respuesta esperada seria algo como

"0732ISO0250000330210F23C84812E808402000000001000000000063944200"

pero esta cosa me responde

"0732ISO0250000330210F23C84812E808402000000001000000000063944200\0"

he tratado con string.replace, string.remove y no hay caso...

alguna idea?

Para recibir los datos hago lo siguiente

int bytesRec = client.Receive(bytes);
Respuesta = Encoding.ASCII.GetString(bytes, 0, bytesRec);

el problema es que esa respuesta la guardo en SQL pero al llevar el
valor en cuestion se me cae con error "Unclosed quotation mark after
the character string "

Dato: estoy amarrado a una dll de comunicacion con sql por lo que el
unico metodo de consulta es generar la consulta en el codigo, o sea,
no usar procedimientos almacenados.

Y lo hago asi:

INSERT INTO TABLA (campo, texto) VALUES
(campo,'0732ISO0250000330210F23C84812E808402000000001000000000063944200\0')

y eso se me cae...

Alguna idea u orientacion?

Gracias.

Preguntas similare

Leer las respuestas

#1 SoftJaén
22/07/2009 - 21:45 | Informe spam
"Pintamono" escribió:

Mi respuesta esperada seria algo como

"0732ISO0250000330210F23C84812E808402000000001000000000063944200"

pero esta cosa me responde

"0732ISO0250000330210F23C84812E808402000000001000000000063944200\0"

he tratado con string.replace, string.remove y no hay caso...

alguna idea?



Hola:

Puedes obtener una nueva cadena sin la terminación \0 de la siguiente
manera:

string valor =
"0732ISO0250000330210F23C84812E808402000000001000000000063944200\0";

// Obtenemos el índice
int index = valor.LastIndexOf("\0");

// Obtenemos la nueva cadena
valor = valor.Substring(0, index);

MessageBox.Show(valor);

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#2 Sashka
23/07/2009 - 02:38 | Informe spam
No hay caso con string.Replace ??

string s =
"0732ISO0250000330210F23C84812E808402000000001000000000063944200\0";
string ss = s.Replace("\0", "");

Eso funciona...

Sashka

"Pintamono" escribió en el mensaje de
noticias:
Que tal,

tengo un problema con lo siguiente...

Via socket recibo un texto y en algunas ocasiones recibo ademas de la
respuesta esperada un valor "\0" esto se supone que es el fin de linea
pero no hallo como sacarlo...

Mi respuesta esperada seria algo como

"0732ISO0250000330210F23C84812E808402000000001000000000063944200"

pero esta cosa me responde

"0732ISO0250000330210F23C84812E808402000000001000000000063944200\0"

he tratado con string.replace, string.remove y no hay caso...

alguna idea?

Para recibir los datos hago lo siguiente

int bytesRec = client.Receive(bytes);
Respuesta = Encoding.ASCII.GetString(bytes, 0, bytesRec);

el problema es que esa respuesta la guardo en SQL pero al llevar el
valor en cuestion se me cae con error "Unclosed quotation mark after
the character string "

Dato: estoy amarrado a una dll de comunicacion con sql por lo que el
unico metodo de consulta es generar la consulta en el codigo, o sea,
no usar procedimientos almacenados.

Y lo hago asi:

INSERT INTO TABLA (campo, texto) VALUES
(campo,'0732ISO0250000330210F23C84812E808402000000001000000000063944200\0')

y eso se me cae...

Alguna idea u orientacion?

Gracias.
Respuesta Responder a este mensaje
#3 Pintamono
23/07/2009 - 21:37 | Informe spam
On 22 jul, 20:38, "Sashka" wrote:
No hay caso con string.Replace ??

        string s > "0732ISO0250000330210F23C84812E808402000000001000000000063944200\0";
        string ss = s.Replace("\0", "");

Eso funciona...

Sashka

"Pintamono" escribió en el mensaje de
noticias:

> Que tal,

> tengo un problema con lo siguiente...

> Via socket recibo un texto y en algunas ocasiones recibo ademas de la
> respuesta esperada un valor "\0" esto se supone que es el fin de linea
> pero no hallo como sacarlo...

> Mi respuesta esperada seria algo como

> "0732ISO0250000330210F23C84812E808402000000001000000000063944200"

> pero esta cosa me responde

> "0732ISO0250000330210F23C84812E808402000000001000000000063944200\0"

> he tratado con string.replace, string.remove y no hay caso...

> alguna idea?

> Para recibir los datos hago lo siguiente

> int bytesRec = client.Receive(bytes);
> Respuesta = Encoding.ASCII.GetString(bytes, 0, bytesRec);

> el problema es que esa respuesta la guardo en SQL pero al llevar el
> valor en cuestion se me cae con error "Unclosed quotation mark after
> the character string "

> Dato: estoy amarrado a una dll de comunicacion con sql por lo que el
> unico metodo de consulta es generar la consulta en el codigo, o sea,
> no usar procedimientos almacenados.

> Y lo hago asi:

> INSERT INTO TABLA (campo, texto) VALUES
> (campo,'0732ISO0250000330210F23C84812E808402000000001000000000063944200\0')

> y eso se me cae...

> Alguna idea u orientacion?

> Gracias.



Gracias, pero no me funciona...
Respuesta Responder a este mensaje
#4 Pintamono
23/07/2009 - 21:38 | Informe spam
On 22 jul, 15:45, SoftJaén wrote:
"Pintamono" escribió:



> Mi respuesta esperada seria algo como

> "0732ISO0250000330210F23C84812E808402000000001000000000063944200"

> pero esta cosa me responde

> "0732ISO0250000330210F23C84812E808402000000001000000000063944200\0"

> he tratado con string.replace, string.remove y no hay caso...

> alguna idea?

Hola:

Puedes obtener una nueva cadena sin la terminación \0 de la siguiente
manera:

string valor > "0732ISO0250000330210F23C84812E808402000000001000000000063944200\0";

// Obtenemos el índice
int index = valor.LastIndexOf("\0");

// Obtenemos la nueva cadena
valor = valor.Substring(0, index);

MessageBox.Show(valor);

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.



gracias, pero no me funciona...
Respuesta Responder a este mensaje
#5 Sashka
23/07/2009 - 22:05 | Informe spam
Puedes poner un ejemplo de lo que no te funciona???
Lo acabo de volver a probar, quizá no estás asignando el replace a la
variable? Es decir string.Replace "devuelve" un string, no modifica el
string.

http://msdn.microsoft.com/es-es/lib...9wtc1.aspx
Copio:
"Este método no modifica el valor de la instancia actual. En su lugar,
devuelve una nueva cadena en la que todas las apariciones de oldValue se
reemplazan por newValue."

Sashka

"Pintamono" escribió en el mensaje de
noticias:
On 22 jul, 20:38, "Sashka" wrote:
No hay caso con string.Replace ??

string s >> "0732ISO0250000330210F23C84812E808402000000001000000000063944200\0";
string ss = s.Replace("\0", "");

Eso funciona...

Sashka

"Pintamono" escribió en el mensaje de
noticias:

> Que tal,

> tengo un problema con lo siguiente...

> Via socket recibo un texto y en algunas ocasiones recibo ademas de la
> respuesta esperada un valor "\0" esto se supone que es el fin de linea
> pero no hallo como sacarlo...

> Mi respuesta esperada seria algo como

> "0732ISO0250000330210F23C84812E808402000000001000000000063944200"

> pero esta cosa me responde

> "0732ISO0250000330210F23C84812E808402000000001000000000063944200\0"

> he tratado con string.replace, string.remove y no hay caso...

> alguna idea?

> Para recibir los datos hago lo siguiente

> int bytesRec = client.Receive(bytes);
> Respuesta = Encoding.ASCII.GetString(bytes, 0, bytesRec);

> el problema es que esa respuesta la guardo en SQL pero al llevar el
> valor en cuestion se me cae con error "Unclosed quotation mark after
> the character string "

> Dato: estoy amarrado a una dll de comunicacion con sql por lo que el
> unico metodo de consulta es generar la consulta en el codigo, o sea,
> no usar procedimientos almacenados.

> Y lo hago asi:

> INSERT INTO TABLA (campo, texto) VALUES
> (campo,'0732ISO0250000330210F23C84812E808402000000001000000000063944200\0')

> y eso se me cae...

> Alguna idea u orientacion?

> Gracias.



Gracias, pero no me funciona...
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida