줄 단위로 읽으려는 문자열이 있지만 줄 바꿈 문자가 있어야합니다 (StringReader.ReadLine이 불행히도 다듬어지지 않습니다. 루비에서 보관됩니다). 이 작업을 수행하는 가장 빠르고 가장 효과적인 방법은 무엇입니까? 입력을 문자 단위 읽기줄 바꿈 문자를 자르지 않고 C#에서 한 줄 읽음
- 과 긍정적 예측
대안 나는 대해 생각해 봤는데
또는 줄의 실제 위치를 알아야하기 때문에 줄 구분 기호 만 신경 써야하며 구분 기호는 한 문자 또는 세 문자 일 수 있습니다. 따라서 문자열 내에서 커서의 실제 위치를 되돌릴 수 있다면 StringReader에도이 기능이 없습니다.
편집 : 여기 현재 구현됩니다. 파일 끝은 빈. 자열을 리턴하여 지정됩니다.
StringBuilder line = new StringBuilder();
int r = _input.Read();
while (r >= 0)
{
char c = Convert.ToChar(r);
line.Append(c);
if (c == '\n') break;
if (c == '\r')
{
int peek = _input.Peek();
if (peek == -1) break;
if (Convert.ToChar(peek) != '\n') break;
}
r = _input.Read();
}
return line.ToString();
내 대답에 다른 대안이있을 수 있습니다,하지만 데이터에서 오는되는 위치에 따라 달라 소스 단지 일반 문자열이 어떤 종류의 스트림, 또는인가? – Aaronaught
나는 그것들이 일관성이 없을 것이라고 확신하며 입력을 변경할 수 없다. 그것은 읽기 전용으로 간주된다 (원래의 문자열 안에 문자 위치가 필요하기 때문에 문자열을 복제하고 변경하지 않는다). 그러나 입력은 일반 문자열입니다. – SztupY
아래의 Aaronaught에 대한 귀하의 의견에서 "모노와 .net2와 호환되도록 설계되었으므로 가정 할 수 없습니다": 주어진 유일한 줄 수있는 줄 끝 부분에 대한 유효한 가정은 없는가? 파싱하는 문자열의 소스? – BillW