Java에서 플랫폼 종속적 줄 바꿈을 어떻게 얻습니까? 어디서나 "\n"
을 사용할 수 없습니다.플랫폼 종속적 인 개행 문자는 어떻게 얻습니까?
답변
를 얻을 수
System.getProperty("line.separator");
를 사용 (또는 다른 수 당신이로 %n
을 사용할 수 있습니다) 방법을 포맷
Calendar c = ...;
String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY%n", c);
//Note `%n` at end of line ^^
String s2 = String.format("Use %%n as a platform independent newline.%n");
// %% becomes % ^^
// and `%n` becomes newline ^^
자세한 내용은 Java 1.8 API for Formatter을 참조하십시오.
당신은 당신이 자바 1.5 이상과 및 String.format 사용하는 경우 line.separator에 속성뿐만 아니라 행 단락에게
파일에 개행 문자를 쓰려면 BufferedWriter의 newLine() 메서드를 사용하면됩니다.
을 사용하여 파일
commons-lang 라이브러리는 자바 7 SystemUtils.LINE_SEPARATOR
예, 타사 라이브러리를 설치하면 플랫폼 독립적 인 새 행을 얻을 수 있습니다! #facepalm –
@Shervin 물론 그렇게하지는 않겠지 만, 내가 작업 한 많은 프로젝트는 이미 commons-lang과 이전 버전의 Java를 사용하고 있습니다. 그래서 당신이 이미 commons-lang을 사용하고 있다면, 이것은 현명한 대답입니다. 나는 그것을 지적 할 필요가 없다고 느꼈다. 분명히 틀렸다. – lexicalscope
이 라이브러리는 이미이 라이브러리를 사용하고있는 프로젝트에 좋은 제안입니다. –
이라는 사용할 수있는 상수 필드가 지금 System.lineSeparator()
방법을 가지고 새로운 라인을 작성하는 플랫폼 독립적 인 방법을 제공합니다 클래스 BufferedWriter
의 방법 newLine()
.
자주 (잘) 한 번에 2를 사용하는 것을 발견했을 때, 몇개의 라인 분리자를 돌려주는'lineSeperator (int)'라는 오버로드 된 메소드를 제공하는 것이 좋았을 것입니다. – Kon
@Kon [이 답변] (http://stackoverflow.com/a/24946101/594137)에 기반 :'String.join ("", Collections.nCopies (5, System.lineSeparator()))' –
String + String 등을 사용하여 문자열을 추가하지 마십시오. 대신 StringBuilder를 사용하십시오.
이것은 실제로 대부분의 경우 중요하지 않습니다. [Coding Horror의 Jeff Atwood는이 특별한 종류의 미세 최적화에 대한 블로그 게시물을 제작했습니다] (http://www.codinghorror.com/blog/2009/01/the-sad-tragedy-of -micro-optimization-theater.html). "string + string'"과 같은 주장을하기 전에 항상 메트릭을 수행하십시오. – Spoike
제프의 기사는 실행 시간에만 닿기 때문에 약간 꺼져있을 수도 있습니다. Java에서의 문자열 연결은 실행 속도뿐 아니라 GC에서 정리할 메모리에 남겨 두는 쓰레기의 양도 증가시켜 GC 실행 빈도가 높아질 수 있습니다. 이는 환경 및 구성에 따라 문제 일 수도 있고 아닐 수도 있습니다. – Lajcik
Lajcik, 정말 많은 문자열 조작을하는 사람들을 제외하고는 모든 경우에 대해 사전 최적화 된 것으로 판단됩니다. StringBuffer는 마이너 연결 요구 사항에 대한 반 패턴입니다. 많은 경우 위의 여러 줄 예제보다 String1 + separator + String2가 읽기 쉽습니다. 게다가, 나는 메모리 & GC가 SB를 추가함으로써 긍정적으로 영향을 받는지 테스트 할 것을 제안한다. 많은 경우 나는 그것이 아닌 것 같아요. 테스트할만한 가치가없는 경우 사전 최적화가되어있어 가독성에 중점을 둡니다. –
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();
위의 스 니펫에는 플랫폼과 관계없이 새로운 행으로 구분 된 두 개의 문자열이 있습니다.
- 1. 종속적 인 변경
- 2. 개행 문자는 Mozilla Firefox에서 실패하지만 Chrome에서 작동합니다.
- 3. 이클립스에 종속적 인 여러 안드로이드 프로젝트
- 4. 어떻게 레일 3에 종속적 인 많은 다형성 연관이 있습니까?
- 5. Xcode 4에서 상호 종속적 인 대상의 영향?
- 6. 라이브러리에 종속적 인 프로그램 버전 관리
- 7. WPF - 계단식 ComboBoxes 종속적 인 업데이트되지 않음
- 8. 설정 종속적 인 케이크에 대한 행동
- 9. 정규 표현식은 크로스 플랫폼 개행 문자와 일치하는
- 10. C++로 파일을 어떻게 얻습니까?
- 11. JavaScript에서 객체의 이름은 어떻게 얻습니까?
- 12. 폴더의 크기는 어떻게 얻습니까?
- 13. 모델로부터 어떻게 가치를 얻습니까?
- 14. 마우스 위치는 어떻게 얻습니까?
- 15. PHP에서 'referer'헤더를 어떻게 얻습니까?
- 16. 관리자 권한은 어떻게 얻습니까?
- 17. C# 일부 컨트롤에 종속적 인 폼을 구현하는 방법은 무엇입니까?
- 18. 플랫폼 독립적 인 수학 라이브러리
- 19. 플랫폼 독립적 인 이클립스 설정
- 20. mvc3 및 엔티티 - 역할에 종속적 인 기본 쿼리
- 21. ASCII 문자는 어떻게 메모리에 저장됩니까?
- 22. 제한된 수의 문자는 어떻게 인쇄합니까?
- 23. MySQL 배열의 선택된 행에 종속적 인 mysql 쿼리 결과 출력
- 24. 테스트를 위해 인간에 종속적 인 작업을 자동화하는 방법은 무엇입니까?
- 25. 부울 속성이 종속적 인 관찰 가능 트리거를 트리거하지 않음
- 26. mod_rewrite 하위 폴더 이름에 종속적 인 여러 하위 폴더에 docroot
- 27. WiX - 설치할 서비스에 종속적 인 기존 서비스 수정
- 28. ORACLE SQL : 하나의 문장에서 CODE에 종속적 인 여러 SUMS
- 29. JTextArea에서 선택한 문자 위치를 어떻게 얻습니까?
- 30. gtk.Textbuffer에서 개행 문자 지우기
감사합니다. 확실 System.getProperty ("line.separator"); "Line 1"+ System.getProperty ("line.separator") + "Line 2" – Buttons840
오, 내 "1 호선"+ System.getProperty ("line.separator")를 사용하는 데 지쳐있다. + "Line 2"는 실제로 내가 본 것 중 가장 못된 것 중 하나입니다. 다른 곳에서 상수를 선언하는 것만으로도 고통 스러울 것입니다. – abahgat
최소한이 작업은 log4j 문에 전달되는 문자열로 작동하지 않습니다. 마지막에 줄 바꿈이있는 예제를 만들면 잠재적으로 문제가 숨겨집니다. 또한, 문자열 s2는 '%% n'을 사용하여 혼란 스럽습니다. –