2010-08-02 16 views
20

Me gustaría saber cómo eliminar '\ 0' de una cadena. Esto puede ser muy simple, pero no es para mí, ya que soy un nuevo desarrollador de C#.Cómo quitar ' 0' de una cadena en C#?

tengo este código:

public static void funcTest (string sSubject, string sBody) 
{ 
    Try 
     { 
     MailMessage msg = new MailMessage(); // Set up e-mail message. 
     msg.To = XMLConfigReader.Email; 
     msg.From = XMLConfigReader.From_Email; 
     msg.Subject = sSubject; 
     msg.body="TestStrg.\r\nTest\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\n";  
     } 
    catch (Exception ex) 
     { 
     string sMessage = ex.Message;  
     log.Error(sMessage, ex); 
     } 
} 

Pero lo que quiero es:

msg.body="TestStrg.\r\nTest\r\n"; 

Entonces, ¿hay una manera de hacer esto con un simple código?

Respuesta

30

Parece que solo quiere la función string.Replace (método estático).

var cleaned = input.Replace("\0", string.Empty); 

Editar: Aquí está el código completo, conforme a lo solicitado:

public static void funcTest (string sSubject, string sBody) 
{ 
    try 
    { 
     MailMessage msg = new MailMessage(); 
     msg.To = XMLConfigReader.Email; 
     msg.From = XMLConfigReader.From_Email; 
     msg.Subject = sSubject; 
     msg.Body = sBody.Replace("\0", string.Empty); 
    } 
    catch (Exception ex) 
    { 
     string sMessage = ex.Message;  
     log.Error(sMessage, ex); 
    } 
} 
+0

Hola Noldorin .... Entonces, cómo agrego esta línea de código a mi función. Porque cuando agrego una nueva línea de código a la función, no se ejecuta y no sé por qué. Por favor, ayúdenme a insertar esta línea de código que proporciona en mi función para que se ejecute normalmente. Muchas gracias ... – Davideg

+0

@David: Ver mi actualización. :) Espero que eso funcione. – Noldorin

+0

Cuando modifico la línea: msg.body = sBody.Replace ("\ 0", string.Empty); se genera un error bulid: 'System.Web.Mail.MailMessage.body' es inaccesible debido a su nivel de protección. 1) ¿Por qué es eso? 2) Cuando agrego un nuevo código en mi proyecto. No se ejecuta y lo paso por alto y no sé por qué? ¿Puedes decirme porque? Gracias v.mucho ... – Davideg

1
var str = "TestStrg.\r\nTest\0\0\0\0\0\0\0\0\0\r\n".Replace("\0", ""); 

String.Replace() reemplazará todos los \0 's con una cadena vacía, eliminando de este modo ellos.

+3

No soy un chico C#, pero por curiosidad, ¿para qué es el '@'? – Chris

+0

El '@' no es lo que quiere –

+2

En realidad, no funcionará con el símbolo @ porque eso significa que ignorará el carácter de escape e interpretará la cadena como "barra diagonal cero" en lugar de escapar al carácter nulo. –

6

Prueba esto:

msg.Body = msg.Body.Replace("\0", ""); 
+0

Parece que debería funcionar. Pero ahora tengo otro problema y necesito tu ayuda. Cuando agrego una nueva línea de bacalao a cualquier clase en mi proyecto C#. Esta línea de código no se ejecuta en el tiempo de ejecución y el depurador pasa sobre ella. 1) ¿Cómo hacer que se ejecute el nuevo código? 2) ¿Hay alguna propiedad en Visual Studio 2005? 3) ¿O es algo relacionado con el proyecto C#? Gracias de antemano por cualquier intento de ayudar ... – Davideg

+1

Parece que el proyecto no se está creando, por lo que se ignoran los cambios realizados. Compruebe que su proyecto está configurado para compilar en Configuration Manager – w69rdy

2
msg.body = sBody.Replace("\0", ""); 
9

sólo tiene que Replace que

msg.body="TestStrg.\r\nTest\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\n".Replace("\0", string.Empty);  
+0

aquí la conexión de red es demasiado lenta :(para publicar pronto – anishMarokey

+8

@Noldorin, eso es increíblemente grosero por una diferencia de 3 minutos. –

+0

@Anthony: No realmente. A) Son 4 minutos , b) Es una mala etiqueta publicar una respuesta idéntica una vez que ya se han publicado varias, solo para representar puntos de leche. Si respondo sustancialmente tarde cuando una pregunta ya ha sido respondida, borro mi respuesta de manera adecuada. – Noldorin

1

Sé que llego tarde aquí, pero, mientras String.Replace funciona la mayor parte del tiempo que tengo encontré que me gusta la versión regular de esto mucho mejor y es más confiable en la mayoría de los casos

using System.Text.RegularExpressions; 
... 

msg.body=Regex.Replace("TestStrg.\r\nTest\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\n","\0"); 
21

que utilizo: something.TrimEnd('\0')

2

Mantener estúpidamente simples = *

return stringValue.Substring(0, stringValue.IndexOf('\0')); 
+0

Esto es exactamente lo que necesitaba. Tuve un poco de basura después de la primera \ 0 y me quedé con los métodos Reemplazar de arriba. – Gerhard

0

Esta línea debe trabajar:

string result = Regex.Replace(input, "\0", String.Empty); 
2

Este fue el primer resultado de Bing, y que no tenía mi método preferido, que es

string str = "MyString\0\0\0\0".Trim('\0'); 
Cuestiones relacionadas