如何删除'\0';从C#中的字符串开始?

如何删除'\0';从C#中的字符串开始?,c#,C#,我想知道如何从字符串中删除“\0”。这可能很简单,但对我来说并不合适,因为我是一名新的C#开发者 我有以下代码: public static void funcTest (string sSubject, string sBody) { Try { MailMessage msg = new MailMessage(); // Set up e-mail message. msg.To = XMLConfigReader.Email;

我想知道如何从字符串中删除“\0”。这可能很简单,但对我来说并不合适,因为我是一名新的C#开发者

我有以下代码:

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";

那么,有没有一种方法可以用一个简单的代码来实现这一点呢?

似乎您只需要函数(静态方法)

编辑:以下是完整的代码,请参见:

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);   
    }
}
String.Replace()
将用空字符串替换所有的
\0
,从而删除它们。

尝试以下操作:

msg.Body = msg.Body.Replace("\0", "");
你只需要去做


我知道我来晚了,但是,虽然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");

我使用:
something.TrimEnd('\0')
让它保持愚蠢的简单=*

return stringValue.Substring(0, stringValue.IndexOf('\0'));
这条线应该可以工作:

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

这是Bing中的第一个结果,它没有我喜欢的方法,即

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

如果使用LINQ,可能会有更快的结果

str.TakeWhile(c => c != '\0');

我不是C#guy,但出于好奇,
@
的作用是什么?实际上它不适用于@符号,因为这意味着它将忽略转义字符,并将字符串解释为“反斜杠零”而不是将其转义为空字符。@=不应处理转义序列。@Chris:
@
用于将斜杠作为符号考虑在内。答案是错误的,
@
不应该出现在这里,因为一个
\0
simbol被替换,而不是两个
\
0
。所以
@“blah\t”
就像Python的
r“blah\t”
这里的网络连接太慢了:(邮寄soon@Noldorin安东尼:不太礼貌。a)只有4分钟,b)一旦有几个答案已经发布,就发布一个相同的答案是不礼貌的,只是为了榨取代表分数。如果我在一个问题已经被回答的时候回答得太晚,我会适当地删除我的回答。。。。因此,我如何将此代码行添加到函数中。因为当我向函数中添加一行新代码时,它不会被执行,我也不知道为什么。。请帮助我如何将您提供的这行代码插入到我的函数中,以便正常执行。非常感谢…当我更改行时:msg.body=sBody.Replace(“\0”,string.Empty);生成bulid错误:“System.Web.Mail.MailMessage.body”由于其保护级别而不可访问。1) 为什么呢?2) 当我向项目中添加新代码时。它没有执行并跳过它,我不知道为什么?你能告诉我为什么吗?非常感谢…好的,伙计,我想这段代码会成功的。。但当我向函数中添加新代码时,它不会在运行时执行。。我不知道该怎么办?你能帮我做这个吗?看来应该行得通。但我现在有另一个问题&我需要你的帮助。当我在c#项目的任何类中添加一行新的cod时。这一行代码不会在运行时执行,调试器会跳过它。1) 如何使新代码执行?2) VisualStudio2005中是否有房产?3) 还是与c#项目有关?提前感谢您的帮助。这听起来好像项目还没有建成,所以所做的任何新更改都被忽略了。检查您的项目是否设置为在配置管理器中生成这正是我所需要的。在第一个\0之后,我有一些垃圾,这些垃圾仍然存在于上面的Replace方法中。
return stringValue.Substring(0, stringValue.IndexOf('\0'));
string result = Regex.Replace(input, "\0", String.Empty);
string str = "MyString\0\0\0\0".Trim('\0');
str.TakeWhile(c => c != '\0');