스트림의 라인을 읽을 때 (실제로 COM 포트의 스트림입니다), 반환 된 문자열에는 \ n 또는 \ r 문자 (또는 \ r \ n 조합)가 포함되지 않습니다. 로깅 목적으로, 나는 그들을 유지하고 싶습니다. 현재 내 루프는 다음과 같습니다C# 캐리지 리턴 및 줄 바꿈 줄을 어떻게 유지하고 유지합니까?
while (newPort.BytesToRead > 0)
{
received = ReadLine(newPort);
response.Add(received);
}
을 그래서 기본적으로 내가 "응답"이라는 문자열 목록에 추가 한 후 문자열을 읽고 있어요. 내가 원했던 것은 리턴 된 문자열`received '가 원래의 스트림에 있던 \ r 또는 \ n 또는 \ r \ n을 포함하고 텍스트 줄을 끝내는 것입니다.
이것은 가능한가? 아니면 심지어 trivially!
감사합니다.
나는 이것이 매우 어렵다고 생각합니다. 나는 그것에 대해 생각하는 것을 의미합니다, 만약 내가 \ r을 받았다면, 나는 그것이 다음 문자인지 알아야만합니다. \ n. 다음 문자가 없으면 예외가 발생하여 시간 초과됩니다. 다음 문자가 있고 \ n이 아닌 경우 다음 반복에서 현재 문자로 만들어야합니다.
좋아, 나는 그것에 균열이 있었다. 여기에 내가 옳다고 생각입니다 ... :
{
int s = 0, e = 0;
for (; e < line.Length; e++)
{
if (line[e] == '\n')
{
// \n always terminates a line.
lines.Add(line.Substring(s, (e - s) + 1));
s = e + 1;
}
if (line[e] == '\r' && (e < line.Length - 1))
{
// \r only terminates a line if it isn't followed by \n.
if (line[e + 1] != '\n')
{
lines.Add(line.Substring(s, (e - s) + 1));
s = e + 1;
}
}
}
// Check for trailing characters not terminated by anything.
if (s < e)
{
lines.Add(line.Substring(s, (e - s)));
}
}
왜 그냥 수동으로 http://msdn.microsoft.com/en-us/library/system.environment.newline.aspx와 문자열의 끝에 줄 바꿈을 추가하지 마십시오 – Tudor