2016-12-22 2 views
-2

"A\nC".replaceAll("\\n", "B").replaceAll("B", "\\n")"A\nC"을 반환하지만, 대신 "AnC"이 표시됩니다.텍스트를 개행 문자로 바꾸기

처음에 I 정규식 탈출이 교체로 인식되지 않을 생각하지만 생산 "ABC".replaceAll("B", "\\\\")"A\\C" 않는 (즉, A의 프린트 \ C등).

\ n 교체가 작동하지 않는 이유를 이해시켜 주시겠습니까?

내 목표는 .replaceAll("...", "\n")을 쓰지 않고 주어진 패턴을 개행 (​​"\ n")으로 대체하는 것입니다 (교체 문자열은 외부 시스템에서 제공되며 줄 바꿈을 포함 할 수 없습니다).

는 (I 주변 검색을 시도했지만 뭔가 다른과 줄 바꿈 뭔가 교체에 대한 아무것도 뉴 라인 교체에 대한 질문의 톤을 발견했다.)

+1

리터럴 백 슬래시로 바꾸려면 대체 패턴에서 4 개의 백 슬래시가 필요합니다. –

+0

"A \ nC".replaceAll ("\\ n", "B"). replaceAll ("B", "\\\\ n") ' –

+1

@ WiktorStribiżew 실제로 문자열 "A \\ nC" . – Sxilderik

답변

1

당신은 대신 "\\ n을"의 "N \"를 사용합니다. "\\ n"은 "\ n"으로 컴파일되지만 줄 바꿈 문자로 컴파일되지 않습니다.

1

정확히 무엇을 찾고 있는지 \ n 탈출하려고하는 이유를 모르겠습니다. 이것은 줄 바꿈 문자이며 일반 문자로 사용하십시오. 백 슬래시에 깊은 인상을받지 마십시오.

+0

대체 문자열이 외부 시스템에서 제공되고 줄 바꿈 문자를 생성 할 수 없기 때문에 -라고 말했습니다. 물론, 나는 다른 방법으로 문제를 해결할 수 있지만 그게 중요한 것은 아니다. 줄 바꿈에 이스케이프 시퀀스를 사용할 수없는 이유와 그 해결 방법이 있는지 알고 싶습니다. – Ale

+0

이 의견은 원래 질문과 모순 된 것 같습니다. 탈출 할 필요가 없으므로 "줄 바꿈에 이스케이프 시퀀스 사용"이 무슨 뜻인지 알지 못합니다. – Sxilderik

+0

'.replaceAll ("\\ n", "B")'을 쓸 때 줄 바꿈에 정규식 이스케이프 시퀀스를 사용하고 있습니다. 그리고 그것은 작동합니다 :''A \ nC ".replaceAll ("\\ n ","B ")"'는 "ABC"를 제공합니다. – Ale

관련 문제