1. Обзор
В этой статье мы собираемся изучить различные подходы к удалению начальных и конечных двойных кавычек из строки
в Java .
То, что мы здесь рассмотрим, может быть полезно для обработки текста, извлеченного из файлов или полученного из других источников.
2. Простой подход: метод подстроки
Давайте сначала начнем с простого подхода, используя метод подстроки
. Этот метод можно вызвать для объекта String
, чтобы вернуть определенную подстроку.
Метод требует два параметра:
beginIndex
— индекс символа, с которого должна начинаться подстрокаendIndex
— индекс, после которого должна заканчиваться подстрока
Таким образом, учитывая, что наша входная строка
заключена в двойные кавычки, мы можем использовать метод подстроки
:
String input = "\"text wrapped in double quotes\"";
String result = input.substring(1, input.length() - 1);
System.out.println("Input: " + input);
System.out.println("Result: " + result);
Выполнив приведенный выше код, мы получим следующий вывод:
Input: "text wrapped in double quotes"
Result: text wrapped in double quotes
Когда мы не уверены, будет ли строка
заключена в двойные кавычки или нет, мы должны проверить это перед запуском метода подстроки :
if (input != null && input.length() >= 2
&& input.charAt(0) == '\"' && input.charAt(input.length() - 1) == '\"') {
result = input.substring(1, input.length() - 1);
}
В приведенном выше примере мы проверяем, что строка
содержит не менее двух символов и начинается и заканчивается двойными кавычками.
3. Использование метода replaceAll
В дополнение к методу подстроки
мы также можем использовать метод replaceAll
. Этот метод заменяет все части строки
, соответствующие заданному регулярному выражению . Используя replaceAll
, мы можем удалить все вхождения двойных кавычек, заменив их пустыми строками:
String result = input.replaceAll("\"", "");
С одной стороны, этот подход имеет то преимущество, что удаляет все вхождения двойных кавычек, даже если строка состоит из нескольких строк. С другой стороны, при таком подходе мы не можем удалить только двойные кавычки в начале и в конце строки.
Чтобы удалить двойные кавычки только в начале и в конце строки ,
мы можем использовать более конкретное регулярное выражение:
String result = input.replaceAll("^\"|\"$", "");
После выполнения этого примера вхождения двойных кавычек в начале или в конце строки
будут заменены пустыми строками.
Чтобы понять этот подход, давайте разберем наше регулярное выражение.
Во-первых, у нас есть символ вставки (^), за которым следуют экранированные двойные кавычки (\") для сопоставления двойных кавычек в начале String
. Затем идет символ вертикальной черты (|), указывающий на совпадающую альтернативу — аналогично логическому оператору ИЛИ.
Наконец, мы избежали двойных кавычек, за которыми следует символ доллара ($) для сопоставления двойных кавычек в конце String
.
4. Использование гуавы
Другой возможный подход к удалению двойных кавычек из начала и конца String
— использование класса CharMatcher
из библиотеки Guava :
String result = CharMatcher.is('\"').trimFrom(input);
Этот подход проще для понимания и удаляет только начальные и конечные кавычки из String
. Однако, чтобы этот подход работал, нам нужно добавить в наш проект библиотеку guava :
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava-version}</version>
</dependency>
В этом случае нам нужно установить для свойства ${guava-version}
версию, которую мы хотим использовать.
5. Вывод
В этой статье мы рассмотрели различные варианты удаления двойных кавычек в начале и в конце строки .
Мы можем применить любой из этих подходов на практике. Каждый из них имеет преимущества и недостатки.
Например, при использовании библиотеки Guava у нас есть простое и элегантное решение. Однако, если бы Guava не была включена в наш проект, это решение потребовало бы добавления новой зависимости.
Как всегда, код, представленный в этой статье, доступен на GitHub .