"""
구분 기호가 있는 Java 13 멀티 라인 텍스트 블록 기능이 널리 알려지고 있습니다.
그러나 포함 된 줄 바꿈없이 전체 단락이 필요한 곳에서 반복적 인 요구가 있습니다.
즉, 다음 코드 스 니펫 :
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
예상대로 다음을 생성합니다.
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
… 보통 매우 유용합니다. 그러나 제 경우에는 특히 큰 단락의 경우 이것을 생성해야합니다.
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(…. 그리고 나중에 텍스트 흐름을 처리하십시오.)
트리플 쿼트 기능에 “줄 바꾸기 없음”매개 변수를 설정하는 방법이 있습니까?
답변
이 기능의 설계자는이 요구 사항도 실현했습니다 ( JEP368의 ‘새로운 이스케이프 시퀀스’ 참조 ). 따라서 JDK 14에 대한 최신 초기 액세스 빌드를 사용하면 후행 \
을 사용하여 줄 끝에서 새 줄을 벗어날 수 있습니다 .
public class Main {
public static void main(String[] args) {
String paragraph =
"""
aaaa bbbb cccc \
dddd eeee ffff \
gggg hhhh iiii \
""";
System.out.println(paragraph);
}
}
인쇄물:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
답변
String.lines
Java-11부터 도입 된 것을 다음과 같이 사용할 수 있습니다 .
String output = paragraph.lines().collect(Collectors.joining());
무료이며 그만한 가치가있는 두 가지 코드 블록을 JShell에서 실행 한 스크린 샷은 다음과 같습니다.
답변
실제로 Java 13에서 좋은 대답을 찾는 것이 쉽지는 않지만 (아마도 불가능할 수도 있음) Jorn Vernee는 그의 대답에서 문제를 우아하게 해결했다고 생각합니다 (Java 14의 새로운 이스케이프 시퀀스는 수용 가능한 솔루션을 제공합니다).
여러 가지 우려 사항을 확장하려면 다음을 수행하십시오.
- 홀거는 ” ‘텍스트 블록’기능은 그다지 설득력이 없다”고 언급했다. 인공 문자열 연결을 수행하는 많은 “추악한”코드를 보았으므로이 기능이 분명히 문제를 해결 한다고 생각 합니다 . 다른 한편으로, 나는 이와 같은 기능이 남용의 여지가 많다는 것에 동의해야 한다 ( “지금 우리는 그것을 훌륭하게 할 수 있기 때문에 자바 코드에 많은 텍스트를 넣자!”-다음 요점 참조) ).
- 원래 질문에는이 기능을 전혀 사용하지 않고 해당 내용을 리소스 파일로 외부화하는 조언을 제공하는 “큰 단락”이 언급되어 있습니다.
- 명확성과 특정 측면에 대해서는 “독자에게는 분명하지 않으므로 분명하지 않은 의미의 구문이 있습니다”. 그것은 부분적으로 정확하며, 현재 이용 가능한 자료가 그렇게 크지 않은 동안 약간의 독서와 실험이 필요합니다. 나는 이것을 찾았습니다 : 텍스트 블록 에 대한 프로그래머 안내서 , 많은 예제를 제공합니다. 또한 텍스트 블록에 대한 예제를 작성했습니다. TextBlocks.java- 잘하면 도움이 될 것입니다.
중재자에 대한 참고 사항 :이 답변이 잠재적으로 가이드 라인을 위반한다는 것을 알고 있습니다 (질문을 다루지 않고 다른 사용자의 의견에 답장합니다). 여전히 진행중인 주제에 대한 토론의 여지가 있어야한다고 생각합니다 ( 텍스트 블록이 ‘두 번째 미리보기’모드 임을 잊지 마십시오 ).
답변
paragraph.replaceAll("\\n","")
당신을 위해 일을해야합니다.