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

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

Ответ 1

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

String trimmedString = myString.trim();

Ответ 2

String.replaceAll("[\n\r]", "");

Ответ 3

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

Ответ 4

String trimStartEnd = "\n TestString1 linebreak1\nlinebreak2\nlinebreak3\n TestString2 \n";
System.out.println("Original String : [" + trimStartEnd + "]");
System.out.println("-----------------------------");
System.out.println("Result String : [" + trimStartEnd.replaceAll("^(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])|(\\r\\n|[\\n\\x0B\\x0C\\r\\u0085\\u2028\\u2029])$", "") + "]");
  1. Начало строки = ^,
  2. Конец строки = $,
  3. регулярное выражение = | ,
  4. Перевод строки =\r\n | [\n\x0B\x0C\r\u0085\u2028\u2029]

Ответ 5

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

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

// 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] + "-");

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

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

Ответ 6

ТЛ; др

String cleanString = dirtyString.strip() ; // Call new 'String::string' method.

String::strip…

Старый метод String::trim имеет странное определение пробела.

Как обсуждалось здесь, Java 11 добавляет новые методы strip… в класс String. Они используют более удобное для Unicode определение пробелов. См. Правила этого определения в классе JavaDoc для Character::isWhitespace.

Пример кода.

String input = " some Thing ";
System.out.println("before->>"+input+"<<-");
input = input.strip();
System.out.println("after->>"+input+"<<-");

Или вы можете убрать только начальные или конечные пробелы.

Вы не упоминаете, какие именно точки кода составляют ваши новые строки. Я полагаю, что ваша новая строка, вероятно, включена в этот список кодов, на которые нацелена strip

  • Это символ пробела Unicode (SPACE_SEPARATOR, LINE_SEPARATOR или PARAGRAPH_SEPARATOR), но он также не является неразрывным пробелом ('\ u00A0', '\ u2007', '\ u202F').
  • Это '\ t', U + 0009 ГОРИЗОНТАЛЬНАЯ ТАБУЛЯЦИЯ.
  • Это '\n', U + 000A LINE FEED.
  • Это '\ u000B', U + 000B ВЕРТИКАЛЬНАЯ ТАБЛИЦА.
  • Это '\ f', U + 000C ФОРМА.
  • Это 'R', U + 000D ВОЗВРАТ.
  • Это '\ u001C', РАЗДЕЛИТЕЛЬ ФАЙЛА U + 001C.
  • Это '\ u001D', U + 001D ГРУППОВОЙ СЕПАРАТОР.
  • Это "\ u001E", разделитель записей U + 001E.
  • Это '\ u001F', U + 0

Ответ 7

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