2010-08-02 5 views
20

Я хотел бы знать, как удалить '\ 0' из строки. Это может быть очень просто, но это не для меня, так как я новый разработчик 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; 
     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); 

Edit: Вот полный код, в соответствии с просьбой:

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

Hello Noldorin .... Так как я добавляю эту строку кода в свою функцию. Потому что, когда я добавляю новую строку кода в функцию, она не выполняется, и я не знаю, почему .. Пожалуйста, помогите мне, как вставить эту строку кода, который вы предоставляете, в мою функцию для нормальной работы. Большое спасибо ... – Davideg

+0

@David: Посмотрите мое обновление. :) Надеюсь, что сработает. – Noldorin

+0

Когда я изменяю строку: msg.body = sBody.Replace ("\ 0", string.Empty); генерируется ошибка пули: «System.Web.Mail.MailMessage.body» недоступен из-за уровня защиты. 1) Почему? 2) Когда я добавляю новый код в свой проект. Он не выполняет и не перешагивает его, и я не знаю, почему? можешь мне сказать почему? Thank you v.much ... – Davideg

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

String.Replace() заменит все \0 «S с пустой строкой, тем самым удаляя их.

+3

Я не парень на C#, но из любопытства, что такое '@' для? – Chris

+0

'@' не то, что вы хотите –

+2

На самом деле не будет работать с символом @, потому что это означает, что он игнорирует escape-символ и интерпретирует строку как «обратный слэш-ноль», а не экранирует ее до нулевого символа. –

6

Попробуйте это:

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

Кажется, он должен работать. Но у меня есть еще одна проблема, и мне нужна ваша помощь. Когда я добавляю новую строку трески в любой класс в моем проекте C#. Эта строка кода не выполняется во время выполнения, а отладчик переходит на нее. 1) Как сделать новый код выполненным? 2) Есть ли свойство в Visual Studio 2005? 3) Или это что-то связано с проектом C#? Заранее благодарим за любую попытку помочь. – Davideg

+1

Это звучит так, как будто проект не строится, поэтому любые новые сделанные изменения игнорируются. Проверьте, что ваш проект настроен на сборку в Configuration Manager – w69rdy

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

+8

@Noldorin, это невероятно грубо для разницы в 3 минуты. –

+0

@ Энтони: Не совсем. A) Это 4 минуты , б) Это плохой этикет, чтобы опубликовать идентичный ответ, как только несколько уже были отправлены, только чтобы доставить точки повторения. Если я отвечу по-настоящему поздно, когда на вопрос уже был дан ответ, я удалю свой ответ соответствующим образом. – Noldorin

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

Держите его тупо просто = *

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

Это именно то, что мне нужно. У меня был мусор после первого \ 0 и остался с методами Replace сверху. – Gerhard

0

Эта линия должна работать:

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

Это был первый результат в Bing, и у него не было мой предпочтительный метод, который составляет

string str = "MyString\0\0\0\0".Trim('\0'); 
Смежные вопросы