У меня есть строка, содержащая некоторый текст, за которым следует пустая строка. Какой лучший способ сохранить часть текста, но удалить конец строки с конца?
Как удалить строки из начала и конца строки (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])$", "") + "]");
- Начало строки = ^,
- Конец строки = $,
- регулярное выражение = | ,
- Перевод строки =\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", "");