2011-05-12 4 views
0

나는 이것들이 이스케이프 문자라고 알고 있지만 XML 문서를 읽고 무시하는 방법은 무엇입니까? 나는 XmlDocument을 사용하고 있습니다.XML 문서를 읽을 때 r r n n 등을 가져 오는 이유는 무엇입니까?

+0

당신이 읽고있는 무엇

여기에 아주 간단한 해결책이다? XmlDocument? XDocument? 다른 것? –

+2

개행 문자입니다. '무시하세요 '라는 것은 무엇을 의미합니까? –

+0

입력이 무엇이고 원하는 결과가 무엇인지에 대해 최소한의 정보를 제공하십시오. –

답변

2

파일에서 읽은 문자열에 문자 그대로 "\r\n"이 없습니다. 그것들은 escape sequences입니다. '\r''\n'은 각각 줄 바꿈을 구성하는 캐리지 리턴 및 줄 바꿈 문자를 나타냅니다.

그러나 문자열에서 VS 디버거를 사용하는 경우 실제 줄 바꿈 대신 이스케이프 시퀀스가 ​​표시 될 수 있습니다. MSDN에서 :

컴파일시에, 그대로 문자열은 모두 같은 이스케이프 시퀀스 일반 문자열로 변환됩니다. 따라서 디버거 조사 식 창에서 축 어적 문자열을 보면 컴파일러에서 추가 한 이스케이프 문자가 표시되며 소스 코드의 축 어적 버전은 표시되지 않습니다. 예를 들어 축어 문자열 @"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

이것이 훌륭한 반응이라고 생각합니다. 디버거를보고 있기 때문에 이것들이 보이기 만합니다. – Exitos

0

답변은 텍스트 파일에서 얼마나 구체적으로 읽고 있는지 그리고 결국 목표를 달성하려고하는지에 따라 다릅니다.

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(); 
0

당신은 그렇게 같은 파일의 내용에하려면 string.replace을 수행 할 수 있습니다 :

string contents = File.ReadAllText('myfile.txt'); 
contents = contents.Replace('\n', ''); 
관련 문제