Перейти к основному содержимому

Удалить начальные и конечные двойные кавычки из строки

· 3 мин. чтения

1. Обзор

В этой статье мы собираемся изучить различные подходы к удалению начальных и конечных двойных кавычек из строки в Java .

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

2. Простой подход: метод подстроки

Давайте сначала начнем с простого подхода, используя метод подстроки . Этот метод можно вызвать для объекта String , чтобы вернуть определенную подстроку.

Метод требует два параметра:

  1. beginIndex — индекс символа, с которого должна начинаться подстрока
  2. 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 .