Почему, когда я читаю из XML-документа, я получаю \ r \ r \ n \ n и т. Д. И т. Д.? - PullRequest
0 голосов
/ 12 мая 2011

Я понимаю, что это escape-символы, но как мне прочитать XML-документ и игнорировать их?Кстати, я использую XmlDocument.

Ответы [ 3 ]

2 голосов
/ 12 мая 2011

Строка, которую вы читаете из файла, не содержит буквально "\r\n". Это escape-последовательности . '\r' и '\n' представляют символы возврата каретки и новой строки соответственно, которые вместе образуют разрыв строки.

Однако, если вы смотрите отладчик VS на строку, вы можете увидеть escape-последовательности вместо реальных разрывов строк. От MSDN :

Примечание Во время компиляции дословные строки преобразуются в обычные строки с одинаковыми escape-последовательностями. Поэтому, если вы посмотрите дословную строку в окне наблюдения отладчика, вы увидите экранирующие символы, которые были добавлены компилятором, а не дословную версию из вашего исходного кода. Например, дословная строка @"C:\files.txt" появится в окне просмотра как "C:\\files.txt".

Пример:

var mystring = "Hello\r\nWorld";

Console.Write(mystring);

Выход:

Hello
World

Если вы действительно хотите избавиться от разрывов строк в строке, вы можете, например, использовать регулярное выражение:

var result = Regex.Replace(mystring, @"\s+", " ");

// result == "Hello World";
0 голосов
/ 12 мая 2011

Вы можете сделать строку. Заменить содержимое файла следующим образом:

string contents = File.ReadAllText('myfile.txt');
contents = contents.Replace('\n', '');
0 голосов
/ 12 мая 2011

Ответ зависит от того, насколько конкретно вы читаете из текстового файла и что вы пытаетесь достичь в конце.

Вот очень простое решение:

StringBuilder sb = new StringBuilder();
using(var sr = new System.IO.StreamReader('path/to/your/file.txt'))
{
  while(true)
  {
     string line = sr.ReadLine();
     // if this is the final line, break out of the while look
     if(line == null)
        break;
     // append this line to the string builder
     sb.Append(line);
  }
  sr.Close();
}

// the sb instance hold all the text in the file, less the \r and \n characters
string textWithoutEndOfLineCharacters = sb.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...