Как получить зависимую от платформы новую строку в Java? Я не могу использовать "\n"
всюду.Как получить зависящий от платформы символ новой строки?
ответ
В дополнение к свойству line.separator, если вы используете Java 1.5 или более поздней версии и string.Format (или другой форматирования методы), вы можете использовать %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.
Вы можете использовать
System.getProperty("line.separator");
получить Изолятор линии
Если вы пытаетесь написать новую строку в файле, вы можете просто использовать метод newLine() BufferedWriter.
Используйте метод newLine()
класса BufferedWriter
, который обеспечивает платформу самостоятельный путь, чтобы написать новую строку в файле
commons-lang библиотека имеет постоянное поле доступное под названием SystemUtils.LINE_SEPARATOR
Java 7 теперь имеет метод System.lineSeparator()
.
Избегайте добавления строк с помощью String + String и т. Д. Вместо этого используйте StringBuilder.
String separator = System.getProperty("line.separator");
StringBuilder lines = new StringBuilder(line1);
lines.append(separator);
lines.append(line2);
lines.append(separator);
String result = lines.toString();
Это также возможно: String.format("%n")
.
Или String.format("%n").intern()
, чтобы сэкономить несколько байт.
StringBuilder newLine=new StringBuilder();
newLine.append("abc");
newline.append(System.getProperty("line.separator"));
newline.append("def");
String output=newline.toString();
Вышеприведенный фрагмент будет иметь две строки, разделенные новой линией независимо от платформ.
Спасибо! Я уверен, что System.getProperty («line.separator»); имеет свое применение, но я устал видеть: «Строка 1» + System.getProperty («line.separator») + «Строка 2» – Buttons840 2011-08-26 22:02:38
Ой, «Линия 1» + System.getProperty («line.separator») + «Линия 2» - действительно одна из самых уродливых вещей, которые я когда-либо видел. Просто объявление константы в другом месте было бы менее болезненным. – abahgat 2011-12-16 10:56:01
это не работает, по крайней мере, со строкой, входящей в оператор log4j. Создание примера с новой строкой в конце потенциально скрывает проблему. Кроме того, String s2 просто запутывается, используя «%% n» – 2013-05-10 15:02:05