Как я могу обрезать начало и конец двойных кавычек из строки? - PullRequest
116 голосов
/ 09 апреля 2010

Я хотел бы обрезать начало и конец двойной кавычки (") из строки.
Как я могу добиться этого в Java? Спасибо!

Ответы [ 16 ]

223 голосов
/ 09 апреля 2010

Для этого вы можете использовать String#replaceAll() с шаблоном ^\"|\"$.

1007 * Е.Г. *

string = string.replaceAll("^\"|\"$", "");

Чтобы узнать больше о регулярных выражениях, зайдите по адресу http://regular -expression.info .

Тем не менее, это немного похоже на то, что вы пытаетесь изобрести парсер CSV. Если это так, я бы посоветовал поискать существующие библиотеки, такие как OpenCSV .

29 голосов
/ 09 апреля 2010

Чтобы удалить первый и последний символ из строки, используйте:

myString = myString.substring(1, myString.length()-1);
11 голосов
/ 25 июля 2016

Это лучший способ найти двойные кавычки в начале и конце строки.

someString.replace (/(^")|("$)/g, '')
11 голосов
/ 10 апреля 2014

Используя Guava, вы можете писать более элегантно

10 голосов
/ 22 августа 2014

Если двойные кавычки существуют только в начале и в конце, простой код, как это будет работать отлично:

string = string.replace("\"", "");

7 голосов
/ 23 марта 2016

Также с Apache StringUtils.strip():

 StringUtils.strip(null, *)          = null
 StringUtils.strip("", *)            = ""
 StringUtils.strip("abc", null)      = "abc"
 StringUtils.strip("  abc", null)    = "abc"
 StringUtils.strip("abc  ", null)    = "abc"
 StringUtils.strip(" abc ", null)    = "abc"
 StringUtils.strip("  abcyx", "xyz") = "  abc"

Итак,

final String SchrodingersQuotedString = "may or may not be quoted";
StringUtils.strip(SchrodingersQuotedString, "\""); //quoted no more

Этот метод работает со строками в кавычках и без кавычек, как показано в моем примере. Единственным недостатком является то, что он не будет искать строго совпадающих кавычек, только начальные и конечные символы кавычек (т. Е. Без различия между "partially и "fully" кавычками).

6 голосов
/ 22 декабря 2015

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

if (string.length() >= 2 && string.charAt(0) == '"' && string.charAt(string.length() - 1) == '"')
{
    string = string.substring(1, string.length() - 1);
}
5 голосов
/ 23 июля 2018

Котлин

В Kotlin вы можете использовать String.removeSurrounding (разделитель: CharSequence)

1007 * Е.Г. *

string.removeSurrounding("\"")

Удаляет заданную строку delimiter из начала и конца этой строки тогда и только тогда, когда она начинается и заканчивается delimiter . В противном случае возвращает эту строку без изменений.

Исходный код выглядит так:

public fun String.removeSurrounding(delimiter: CharSequence): String = removeSurrounding(delimiter, delimiter)

public fun String.removeSurrounding(prefix: CharSequence, suffix: CharSequence): String {
    if ((length >= prefix.length + suffix.length) && startsWith(prefix) && endsWith(suffix)) {
        return substring(prefix.length, length - suffix.length)
    }
    return this
}
2 голосов
/ 21 июля 2018

Приведенный ниже шаблон при использовании с java.util.regex.Matcher будет сопоставлять любую строку между двойными кавычками, не затрагивая вхождения двойных кавычек внутри строки:

"[^\"][\\p{Print}]*[^\"]"
2 голосов
/ 23 ноября 2017

s.stripPrefix("\"").stripSuffix("\"")

Это работает независимо от того, имеет ли строка кавычки в начале и / или конце.

Редактировать: Извините, только Scala

...