2010-08-02 17 views
20

Mi piacerebbe sapere come rimuovere '\ 0' da una stringa. Questo può essere molto semplice ma non fa per me dato che sono un nuovo sviluppatore di C#.Come rimuovere ' 0' da una stringa in C#?

ho questo codice:

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); 
     } 
} 

Ma quello che voglio è:

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

Quindi, c'è un modo per fare questo con un semplice codice?

risposta

30

vi pare vuole solo la funzione string.Replace (metodo statico).

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

Edit: Ecco il codice completo, come richiesto:

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

Ciao Noldorin .... Così come aggiungo questa linea di codice nella mia funzione. Perché quando aggiungo una nuova linea di codice alla funzione, non viene eseguito e I don 't so perché .. Please help me come inserire questa riga di codice che fornisci nella mia funzione in modo da essere eseguito normalmente. Grazie molto ... – Davideg

+0

@ Davide: Vedere il mio aggiornamento. :) Spero che funzioni. – Noldorin

+0

Quando ho alterare la linea: msg.body = sBody.Replace ("\ 0", string.Empty); viene generato un errore cumulativo: 'System.Web.Mail.MailMessage.body' è inaccessibile a causa del suo livello di protezione. 1) Perché è così? 2) Quando aggiungo un nuovo codice nel mio progetto. Non viene eseguito e scavalcato e non so perché? Puoi dirmi perché? Grazie v.much ... – Davideg

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

String.Replace() sostituirà tutti i \0 's con una stringa vuota, eliminando in tal modo loro.

+3

Non sono un ragazzo di C#, ma per curiosità quale è il '@'? – Chris

+0

'' 'non è quello che vuoi –

+2

In realtà non funzionerà con il simbolo @ perché significa che ignorerà il carattere di escape e interpreterà la stringa come" backslash-zero "invece di eseguirne l'escape sul carattere null. –

6

Prova questo:

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

Sembra che dovrebbe funzionare. Ma ora ho un altro problema e ho bisogno del tuo aiuto. Quando aggiungo una nuova riga di codice a qualsiasi classe nel mio progetto C#. Questa riga di codice non viene eseguita in fase di esecuzione e il passo del debugger su di esso. 1) Come rendere il nuovo codice da eseguire? 2) Esiste una proprietà in Visual Studio 2005? 3) O è qualcosa legato al progetto C#? Grazie in anticipo per qualsiasi tentativo di aiuto .. – Davideg

+1

Sembra che il progetto non sia in costruzione, e quindi qualsiasi nuova modifica apportata viene ignorata. Verifica che il tuo progetto sia impostato su Configuration Manager – w69rdy

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

si solo bisogno di Replace esso

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

qui la connessione è troppo lenta :(per postare subito – anishMarokey

+8

@Noldorin, è incredibilmente scortese per una differenza di 3 minuti –

+0

@Anthony: Non proprio a) Sono 4 minuti , b) È una cattiva etichetta pubblicare una risposta identica quando ne sono già state pubblicate diverse, solo per mungere punti rep. Se rispondo sostanzialmente tardi quando una domanda è già stata risolta, cancello la mia risposta appropriatamente. – Noldorin

1

so che sono in ritardo, ma qui, mentre String.Replace funziona la maggior parte del tempo che ho scoperto che mi piace la versione di questo regex molto meglio ed è più affidabile nella maggior parte dei casi

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

io uso: something.TrimEnd('\0')

2

Keep it stupidamente semplice = *

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

Questo è esattamente ciò di cui avevo bisogno. Ho avuto un po 'di spazzatura dopo il primo \ 0 e che è rimasto con i metodi di sostituzione di cui sopra. – Gerhard

0

Questa linea dovrebbe funzionare:

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

Questo è stato il primo risultato in Bing, e non ha avuto il mio metodo preferito, che è

string str = "MyString\0\0\0\0".Trim('\0'); 
Problemi correlati