Убрать переносы строк java

Русские Блоги

import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtils < public static String replaceBlank(String str) < String dest = ""; if (str!=null) < Pattern p = Pattern.compile("\\s*|\t|\r|\n"); Matcher m = p.matcher(str); dest = m.replaceAll(""); >return dest; > public static void main(String[] args) < System.out.println(StringUtils.replaceBlank("just do it!")); >>

Глупый метод: String s = «Строка, которую вы хотите удалить»;

1. Убрать пробелы: s = s.replace ('\\ s', ''); 2. Снимите возврат каретки: s = s.replace ('\ n', ''); Это также может удалить пробелы и возврат каретки, и другие могут сделать то же самое. Примечание: \ nВведите (\ u000a) \ t горизонтальная вкладка (\ u0009) \ s пробел (\ u0008) Новая строка (\ u000d)*/

Интеллектуальная рекомендация

Первоначальный контакт Wireshark -интерфейса, понимайте пакет и фильтрацию фильтрации

1. ВВЕДЕНИЕ WIRESHARK: Wireshark — это очень популярное программное обеспечение для анализа сетевых пакетов с очень мощными функциями. Вы можете захватить различные сетевые пакеты и как можно больше п.

BZOJ 3307

Дерево n точек, M, операция M, каждый раз, когда вы выбираете две точки x, y, и ставите элемент типа z -типа на путь от x до y. Спросите, какие предметы, которые хранятся больше всего в конце. \[n,m \.

Локальное изображение Docker выпускается в Alibaba Cloud

Локальное зеркало выпущено в Alibaba Cloud 1. Локальный выпуск зеркала в облачный процесс Alibaba Экология Docker Alibaba Cloud ECS показана на рисунке ниже: Метод зеркалирования Построен через Docker.

Измените исходный код FlowLayout, чтобы он поддерживал установку максимального количества строк.

Упомянутый здесь компонент FlowLayout исходит из структуры макета потока, предоставленной Hongyang. Просмотр исходного кода кадраВот Введение в блог автора платформыВот Немного ерунды. Перейдите непос.

обычно используется модуль python time datetime

обычно используется модуль python time datetime Directive Meaning Notes.

Источник

Как удалить символы новой строки из начала и конца строки (Java)?

У меня есть строка, содержащая некоторый текст, за которым следует пустая строка. Какой лучший способ сохранить часть текста, но удалить конец строки с конца?

5 ответов

Используйте String.trim() метод, чтобы избавиться от пробелов (пробелов, новых строк и т.д.) от начала и до конца строки.

String trimmedString = myString.trim(); 

Если вы хотите избавиться, скажем, от каждого переноса строки, вы можете использовать регулярные выражения.

Ах, начало и конец. Я вижу, я видел комментарий об избавлении от «каждого разрыва строки» и ответил на это. Моя вина

Читайте также:  Работа с папками питон

Bro, @JohnB Он также удалит все символы новой строки между строкой. просьба удалить только начальный и конечный символ новой строки.

Будьте осторожны, если вы зацикливаетесь. Это должно будет скомпилировать регулярное выражение при каждом вызове.

Если ваша строка потенциально null , рассмотрите возможность использования StringUtils.trim() — нулевой версии String.trim() .

Я собираюсь добавить ответ на этот вопрос, потому что, хотя у меня был тот же вопрос, предоставленного ответа не хватало. Учитывая некоторые мысли, я понял, что это можно сделать очень легко с регулярным выражением.

Чтобы удалить новые строки с самого начала:

// Trim left String[] a = "\n\nfrom the beginning\n\n".split("^\\n+", 2); System.out.println("-" + (a.length > 1 ? a[1] : a[0]) + "-"); 
// Trim right String z = "\n\nfrom the end\n\n"; System.out.println("-" + z.split("\\n+$", 2)[0] + "-"); 

Я уверен, что это не самый эффективный способ обрезки строки. Но это, по-видимому, самый чистый и самый простой способ встроить такую ​​операцию.

Обратите внимание, что этот же метод можно выполнить, чтобы обрезать любые вариации и комбинацию символов с любого конца, поскольку это простое регулярное выражение.

Да, но что, если вы не знаете, сколько строк в начале / конце? Ваше решение предполагает, что в обоих случаях есть ровно 2 символа новой строки

Второй параметр split() — это просто предел. Оставьте это, если вы хотите совпадать неограниченное количество раз.

String text = readFileAsString("textfile.txt"); text = text.replace("\n", "").replace("\r", ""); 

Это не правильно отвечает на вопрос. Он удаляет все CR и LF, а не только те, которые в начале и в конце.

Источник

Как удалить разрывы строк из файла в Java?

Как я могу заменить все разрывы строк из строки на Java таким образом, чтобы они работали в Windows и Linux (например, никаких проблем с конкретной ОС для возврата каретки/линии/новой строки и т.д.)? Я пробовал (примечание readFileAsString — это функция, которая читает текстовый файл в String):

String text = readFileAsString("textfile.txt"); text.replace("\n", ""); 

О, если вы хотите удалить все переводы строки, удалите все \ n И все \ r (потому что перевод строки Windows равен \ r \ n).

Эй, к вашему сведению, если вы хотите заменить одновременные myString.trim().replaceAll(«[\n]<2,>«, «\n») разрыв строки, вы можете использовать myString.trim().replaceAll(«[\n]<2,>«, «\n») или заменить на один space myString.trim().replaceAll(«[\n]<2,>«, » «)

15 ответов

Вам нужно установить text в результаты text.replace() :

String text = readFileAsString("textfile.txt"); text = text.replace("\n", "").replace("\r", ""); 

Это необходимо, потому что строки неизменяемы — вызов replace не изменяет исходную строку, он возвращает новую, которая была изменена. Если вы не присвоите результат text , то эта новая String будет потеряна, а мусор будет собран.

Как для получения строки новой строки для любой среды, доступной при вызове System.getProperty(«line.separator») .

+1, правильно. Что касается причины: строка неизменна . Метод replace() возвращает желаемый результат. Также смотрите документацию по API: java.sun.com/javase/6/docs/api/java/lang/… Редактировать: ах вы уже редактировали это потом 🙂

Читайте также:  String package name in java

Возможно text = text.replace(«\r\n», » «).replace(«\n», » «); Лучшее решение: иначе слова будут «склеены» друг с другом (без замены одного пробела).

Да, это возможно. Все зависит от того, какой тип данных вы пытаетесь изменить. Иногда (для таких данных, как тетради COBOL) вы не хотите, чтобы между строками были пробелы.

Вы также можете использовать квадратные скобки, чтобы правильно сопоставить символы новой строки для любой ОС: .replaceAll(«[\\r\\n]+», «»)

Поскольку вопрос text = text.replaceAll(«\n», «»).replaceAll(«\r», «»); замены ВСЕХ вхождений, решение скорее text = text.replaceAll(«\n», «»).replaceAll(«\r», «»);

@basZero replaceAll принимает в регулярных выражениях, replace в буквальных строках, оба заменяют все вхождения.

будьте осторожны при создании системной зависимости, это может быть тем, что вам нужно, но у меня был модульный тест со статической строкой, которая проходила на локальной машине Windows, но не выполнялась на машине сборки Continuous Integration (Linux)

Как уже отмечалось в других ответах, ваш код работает не потому, что String.replace(. ) не изменяет целевую строку. (Он не может — строки Java неизменяемы!) То, что он на самом деле делает, это создание новой String с измененными символами по мере необходимости. Но ваш код затем выбрасывает эту строку.

Вот несколько возможных решений. Какой из них наиболее правилен, зависит от того, что именно вы пытаетесь сделать.

Просто удаляет все символы новой строки. Это не справляется с завершением строк Windows или Mac.

// #2 text = text.replace(System.getProperty("line.separator"), ""); 

Удаляет все терминаторы строк для текущей платформы. Это не справляется с тем случаем, когда вы пытаетесь обработать (например) файл UNIX в Windows или наоборот.

Удаляет все терминаторы строк Windows, UNIX или Mac. Однако, если входной файл является текстом, это будет конкатенировать слова; например.

Итак, вы действительно можете это сделать:

// #4 text = text.replaceAll("\\r\\n|\\r|\\n", " "); 

который заменяет каждый ограничитель строки пробелом.

Третий вариант является наилучшим, учитывая, что происхождение текстового файла может быть независимым.

Использование подхода «System.getProperty (« line.seperator »)» было бы наилучшим, чтобы быть максимально независимым от системы. Отличный ответ, спасибо!

@Kingsolmn Kingsolmn — на самом деле это зависит от того, что вы подразумеваете под агностиком. Что делать, если вам нужно быть независимым от системы, которая создала файл; то есть если вы не можете предположить, что он был создан в «этой» системе?

Хорошо, я думал об использовании этого метода для замены системных разрывов строк в текстовом поле на HTML-теги
.

Как насчет text.replaceAll («\\ s +», «»); который должен заменить все вкладки, возвраты, новые строки, вертикальные вкладки и пробелы одним пробелом. + для более чем одного случая.

@webDeveloper — Это хорошее решение . другой проблемы. Вопрос ОП заключается в удалении только разрывов строк.

Начиная с Java 8 мы также можем использовать \R для представления разделителей строк (и нескольких других вещей). Также нет необходимости писать \\n или \\r в регулярных выражениях, \n и \r — это хорошо.

Читайте также:  Html abbr как убрать точки

@Pshemo — однако вам НУЖНО написать \\R потому что \R не является допустимым escape-символом String . в любой версии Java.

Если вы хотите удалить только те строки, которые действительны для текущей ОС, вы можете сделать это:

text = text.replaceAll(System.getProperty("line.separator"), ""); 

Если вы хотите, чтобы вы удалили разделители строк, вы можете сделать это следующим образом:

Или, немного более подробный, но меньше regexy:

text = text.replaceAll("\\r", "").replaceAll("\\n", ""); 

Чтобы избежать склеивания слов (как обсуждалось в комментариях к ответу Калеба), подход к регулярным выражениям можно изменить на text.replaceAll(«(\\r|\\n)+», » «) и (предполагая, что в Java по умолчанию используется жадность? ) у вас будет решение с одним пробелом для каждой последовательности символов новой строки.

Работал отлично для меня после многого, провалился с каждой другой линией.

Линейные строки не совпадают с окнами /linux/mac. Вы должны использовать System.getProperties с атрибутом line.separator.

Это было бы эффективно, я думаю,

String s; s = "try this\n try me."; s.replaceAll("[\\r\\n]+", "") 

отредактировано для подсветки синтаксиса

String text = readFileAsString("textfile.txt").replaceAll("\n", ""); 

Несмотря на то, что определение trim() на веб-сайте oracle Msgstr «Возвращает копию строки с пропущенным пропуском ведущего и конечного пробелов.»

документация не позволяет утверждать, что новые строковые символы (ведущие и конечные) также будут удалены.

Короче говоря String text = readFileAsString(«textfile.txt»).trim(); также будет работать для вас. (Проверено с помощью Java 6)

Вы можете прочитать свой файл с помощью BufferedReader . Этот класс может разбивать входные данные на отдельные строки, которые вы можете собирать по желанию. Способ BufferedReader автоматически распознает соглашения о завершении строки в Linux, Windows и MacOS, независимо от текущей платформы.

BufferedReader br = new BufferedReader( new InputStreamReader("textfile.txt")); StringBuilder sb = new StringBuilder(); for (;;) < String line = br.readLine(); if (line == null) break; sb.append(line); sb.append(' '); // SEE BELOW >String text = sb.toString(); 

Обратите внимание, что readLine() не включает терминатор строки в возвращаемой строке. В приведенном выше коде добавляется пространство, чтобы избежать склеивания последнего слова строки и первого слова следующей строки.

Источник

Русские Блоги

Несколько способов удалить символ новой строки в строке:
1. Используйте метод String replaceAll ();
2. Используйте Google CharMatcher.breakingWhitespace () из гуавы;
3. Используйте метод StringUtils.chomp (); пакета Apache Commons;
pom зависимость

 com.google.guava guava 25.1-jre  org.apache.commons commons-lang3 3.7  
package com.example.demo; import com.google.common.base.CharMatcher; import org.apache.commons.lang3.StringUtils; /** * @author Walker * @since 1.0 2018-10-09 */ public class RemoveCarriageTest < public static void main(String[] args) < // Используем replaceAll String text = "Our line rackets \rthe encouraged symmetry.\n"; String result = text.replaceAll("\n", "").replaceAll("\r", ""); System.out.println(result); String randomSentence = "The backed valley manufactures \r" + "a politician above \n" + "a scratched body."; //google guava result = CharMatcher.breakingWhitespace().removeFrom(randomSentence); System.out.println(result); //apache commons String randomSentence2 = "The pocket reflects " + "over an intimate. \r"; result = StringUtils.chomp(randomSentence2); System.out.println(result); >> 
Our line rackets the encouraged symmetry. Thebackedvalleymanufacturesapoliticianaboveascratchedbody. The pocket reflects over an intimate. 

Источник

Оцените статью