답변:
로 콘텐츠 스타일을 지정하십시오 white-space: pre-wrap;
.
div {
white-space: pre-wrap;
}
<div>
This is some text with some extra spacing and a
few newlines along with some trailing spaces
and five leading spaces thrown in
for good
measure
</div>
white-space: pre-line;
각 단락의 첫 줄을 들여 쓰지 않으려면
모든 공백을 &nbsp;
(구분하지 않는 공백)으로 바꾸고 모든 새 줄 \n
을 <<b></b>br>
(html의 줄 바꿈 ) 으로 바꾸고 싶습니다 . 원하는 결과를 얻을 수 있습니다.
body = body.replace(' ', &nbsp;).replace('\n', '<<b></b>br>');
그 자연의 무언가.
나는 white-space: pre-wrap;
pete에 의해 기술 된 기술 을 시도 했지만 문자열이 연속적이고 길면 컨테이너가 다 떨어지고 어떤 이유로 든 뒤 틀리지 않았지만 조사 할 시간이 많지 않았습니다 . 같은 문제로 <pre>
태그와 다음 CSS를 사용하여 모든 것이 좋았습니다.
pre {
font-size: inherit;
color: inherit;
border: initial;
padding: initial;
font-family: inherit;
}
@Developer의 답변에서 언급했듯이 사용자 입력에 HTML 인코딩을 할 것입니다. XSS가 걱정된다면 원래 입력 된 사용자 입력이 필요하지 않으므로 이스케이프 처리 (및 공백을 줄 바꿈) 할 수도 있습니다.
입력을 이스케이프하면 @ Html.Raw를 사용하거나 MvcHtmlString을 만들어 특정 입력을 렌더링해야합니다.
시도해 볼 수도 있습니다
System.Security.SecurityElement.Escape(userInput)
그러나 나는 그것이 공간을 탈출하지 않을 것이라고 생각합니다. 이 경우 .NET을 수행하는 것이 좋습니다.
System.Security.SecurityElement.Escape(userInput).Replace(" ", " ").Replace("\n", "<br>")
사용자 입력에. 또한 유용성을 더 깊이 파고들려면 미리 정의 된 태그 세트 만 허용하도록 사용자 입력에 대한 XML 구문 분석을 수행하거나 정규 표현식으로 재생할 수 있습니다. 예를 들어
<p>, <span>, <strong>
...하지만 허용하지 마십시오
<script> or <iframe>