developer tip

\ n 및 \ r \ n을

optionbox 2020. 11. 23. 08:02
반응형

\ n 및 \ r \ n을
Java로 바꿉니다.


여러 언어에 대해 여러 번 요청되었지만 작동하지 않습니다. 나는 이와 같은 문자열이

String str = "This is a string.\nThis is a long string.";

그리고 난을 대체하기 위해 노력하고있어 \n함께 <br />사용

str = str.replaceAll("(\r\n|\n)", "<br />");

그러나 \n대체되지 않습니다. RegEx 도구 를 사용하여 확인 하려고했는데 동일한 결과가 나타납니다. 입력 문자열에 일치하는 항목이 없습니다 "(\r\n|\n)". 내가 도대체 ​​뭘 잘못하고있는 겁니까 ?


그것은 나를 위해 작동합니다.

public class Program
{
    public static void main(String[] args) {
        String str = "This is a string.\nThis is a long string.";
        str = str.replaceAll("(\r\n|\n)", "<br />");
        System.out.println(str);
    }
}

결과:

문자열입니다. <br /> 긴 문자열입니다.

당신의 문제는 다른 곳에 있습니다.


당신이 시도하는 것의 좀 더 강력한 버전 :

str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");

나를 위해 이것은 일했습니다.

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "\\\n");

팁 : 환경에서 컴파일하지 않고 빠른 테스트를 위해 정규식 테스터사용 하십시오.


내 계정이 새 계정이므로 Nino van Hooff의 답변에 찬성 투표를 할 수 없습니다. 문자열이 aspx 기반 서버와 같은 Windows 기반 소스에서 오는 경우이 솔루션이 작동합니다.

rawText.replaceAll("(\\\\r\\\\n|\\\\n)", "<br />");

이중 백 슬래시가 단일 슬래시 이스케이프 문자로 해석되므로 이상한 문자 집합 문제인 것 같습니다. 따라서 위의 사중 슬래시가 필요합니다.

다시 말하지만 대부분의 상황에서 "(\\r\\n|\\n)"작동하지만 문자열이 Windows 기반 소스에서 오는 경우 위의 방법을 시도하십시오.

FYI는 그 줄 끝을 바꾸는 문제를 해결하기 위해 모든 것을 시도했습니다. 처음에는에서 로의 변환에 실패 Windows-1252했다고 생각했습니다 UTF-8. 그러나 그것도 작동하지 않았습니다. 이 솔루션이 마침내 트릭을 수행했습니다. :)


그것은 나를 위해 작동합니다. Java 코드는 작성한 그대로 작동합니다. 테스터에서 입력 문자열은 다음과 같아야합니다.

This is a string.
This is a long string.

... 실제 줄 바꿈으로. 다음을 사용할 수 없습니다.

This is a string.\nThis is a long string.

... \n문자열 백 슬래시 'n' 으로 취급하기 때문 입니다.


그것은 효과가 있지만 그것을 알아 내려고 자신을 죽이지 마십시오. 2 패스 만 사용하세요.

str  = str.replaceAll("(\r\n)", "<br />");
str  = str.replaceAll("(\n)", "<br />");

면책 조항 : 이것은 매우 효율적이지 않습니다.


작동합니다. 두 개의 슬래시를 넣어야합니다

str = str.replaceAll("(\\r\\n|\\n)", "<br />");

참고 자료 에는 다음 을 보여주는 예가 있습니다.

private final String REGEX = "\\d"; // a single digit

많은 프로젝트에서 두 개의 슬래시를 사용했는데 제대로 작동하는 것 같습니다!

참고 URL : https://stackoverflow.com/questions/3056834/replace-n-and-rn-with-br-in-java

반응형