2010-08-02 23 views
20

我想知道如何從字符串中刪除'\ 0'。這可能很簡單,但它不適合我,因爲我是一個新的C#開發人員。如何從C#中的字符串中刪除' 0'?

我有這樣的代碼:

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

但我想要的是:

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

那麼,有沒有辦法用一個簡單的代碼來做到這一點?

回答

30

看來你只是想要string.Replace函數(靜態方法)。

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

編輯:下面是完整的代碼,如要求:

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

你好Noldorin .... 所以我如何將這個代碼行添加到我的函數中。因爲當我添加一個新的代碼行到函數,它不會執行,我不知道爲什麼.. 請幫助我如何插入您提供的代碼行到我的函數,以便正常執行。 非常感謝... – Davideg 2010-08-02 13:19:26

+0

@David:查看我的更新。 :)希望工程。 – Noldorin 2010-08-02 13:33:03

+0

當我改變行: msg.body = sBody.Replace(「\ 0」,string.Empty); 生成了一個bulid錯誤:由於其保護級別,「System.Web.Mail.MailMessage.body」無法訪問。 1)爲什麼? 2)當我添加一個新的代碼到我的項目。它沒有執行並且跨過它,我不知道爲什麼?你能告訴我爲什麼嗎? 謝謝v.much ... – Davideg 2010-08-02 13:40:27

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

String.Replace()將用空字符串替換所有\0的,從而消除它們。

+3

我不是C#的人,但出於好奇,'@'是什麼? – Chris 2010-08-02 12:31:13

+0

「@」不是你想要的 – 2010-08-02 12:31:35

+2

實際上不會使用@符號,因爲這意味着它將忽略轉義字符並將該字符串解釋爲「反斜槓零」而不是將其轉義爲空字符。 – 2010-08-02 12:32:16

6

試試這個:

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

它似乎應該工作。但我現在有另一個問題,我需要你的幫助。 當我在c#項目中添加新的鱈魚線到任何類時。這行代碼不會在運行時執行,並且調試器會執行它。 1)如何使新代碼執行? 2)在Visual Studio 2005中是否有屬性? 3)或者它與C#項目有關嗎? 預先感謝您的任何幫助.. – Davideg 2010-08-03 04:14:46

+1

這聽起來像項目沒有建立,所以任何新的變化被忽略。檢查你的項目設置爲在配置管理器 – w69rdy 2010-08-03 08:51:44

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

你只需要Replace

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

這裏建立網絡連接太慢:(很快發佈 – anishMarokey 2010-08-02 12:42:14

+8

@Noldorin,這是令人難以置信的粗魯,相差3分鐘 – 2010-08-02 12:42:21

+0

@安東尼:不是真的a)它是4分鐘,b)一旦發佈了幾個相同的答案,這就是不好的禮儀。如果我在問題已經得到解答的時候回答實質上很晚,我會適當地刪除我的答覆。 – Noldorin 2010-08-02 12:44:33

1

我知道我遲到了,但在這裏,而工程與string.replace我有時間最發現我喜歡這個更好的正則表達式版本,並且在大多數情況下更可靠

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

我用:something.TrimEnd('\0')

2

保持它太簡單= *

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

這正是我所需要的。我在第一個\ 0之後有一些垃圾,並且保留了上面的Replace方法。 – Gerhard 2015-12-10 01:03:40

0

此行應該工作:

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

這是在Bing的第一個結果,它沒有我的首選方法是

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