2009-05-31 4 views
1

저는 처음부터 ASP.NET 용 코드를 작성해 왔으며, 지금까지 본적이없는 무언가를 만났습니다. 일반적으로 C# (예 : 텍스트 영역에서 ASP.NET에 게시 될 때)의 줄 바꿈은 "\ r \ n"을 기대하여 찾았습니다. 이제는 MVC 프레임 워크를 사용하고 있습니다. 텍스트 영역의 전선을 통해 들어오는 텍스트는 단순히 줄 바꿈을 위해 "\ n"을가집니다.C# 및 ASP.NET의 줄 바꿈 변형은 무엇입니까? ( r n vs. n)

줄 바꿈을 정규화하는 오래된 학교 텍스트 상자 컨트롤에서 진행중인 작업이 있습니까? MVC는 그대로 양식 데이터를 사용하기 때문에 정상입니까? 통찰력을 얻고 싶습니다.

답변

6

실제 줄 바꿈 시퀀스가 ​​브라우저마다 다르다는 관찰을했습니다. 한 페이지에 여러 텍스트 영역을 가지고 페이지가 다음 제출하는 경우

:

IE는 반환 "\ 연구 \ n"은 줄 바꿈을 나타냅니다. 이 경우 FF는 "\ n"을 반환합니다.

2006 년 말 어딘가에서 테스트 했으므로 이제는 다를 수 있습니다.

WebForms과 MVC가 관련이 있다고 생각하지 않습니다. 둘 다 제출 된 입력을 처리하고 그대로 제출합니다.

어떻게 든 처리하고 그 의미가 장기에 짧은 위해 그 일을 할 것 이러한 문자를 교체하려면 : 나는 Environment.NewLine을 사용하고

string userText = form["Text"]; 
userText = userText.Replace ("\r\n", "<br/>").Replace ("\r", "<br/>"); 
+1

그냥 "\ r"대신 "\ n"을 사용했는지 확인하십시오. string userText = form [ "Text"]; userText = userText.Replace ("\ r \ n", "
") .Replace ("\ n", "
"); –

+0

모든 줄 바꿈을 catch하는 단일 Regex 식은 다음과 같습니다.'\ r \ n? | \ n'; \ r \ n, \ r 및 \ n을 잡아야합니다. – GeorgDangl

4

\ n은 * nix 스타일 시스템의 줄 끝 변형입니다. \ r \ n은 Windows 관련 라인 종료 동작입니다.

라인 엔딩을 확인하고 비 Windows 환경에 인터페이스를 노출하려면 \ r \ n뿐만 아니라 \ n도 확인해야합니다.

더 많은 정보가 필요하시면 Wikipedia의 Newline 문서를 확인하십시오.

+0

@Emil H : 수정 해 주셔서 감사합니다. 물론 당신 말이 맞습니다. \ n은 * nix 시스템을위한 것이지, \ r은 아닙니다. – Kosi2801

1

:

string userText = form["Text"]; 
userText = userText.Replace (Environment.NewLine, "<br />") 

또한 받아 어떤 newline textarea quirks에 관한 @Haacked의 게시물을보십시오.

관련 문제