Как я могу обрезать начало и конец двойных кавычек из строки?

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

Ответ 1

Вы можете использовать String#replaceAll() с рисунком ^\"|\"$ для этого.

например.

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

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

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

Ответ 2

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

myString = myString.substring(1, myString.length()-1);

Ответ 3

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

someString.replace (/(^")|("$)/g, '')

Ответ 4

Используя Guava, вы можете написать более элегантно CharMatcher.is('\"').trimFrom(mystring);

Ответ 5

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

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

Ответ 6

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

if (string.length() >= 2 && string.charAt(0) == '"' && string.charAt(string.length() - 1) == '"')
{
    string = string.substring(1, string.length() - 1);
}

Ответ 7

Также с 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" строк в кавычках).

Ответ 8

Котлин

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

Э.Г.

string.removeSurrounding("\"")

Удаляет заданную строку разделителя из начала и конца этой строки тогда и только тогда, когда она начинается с конца 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
}

Ответ 9

Scala

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

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

Изменение: Извините, только Scala

Ответ 10

private static String removeQuotesFromStartAndEndOfString(String inputStr) {
    String result = inputStr;
    int firstQuote = inputStr.indexOf('\"');
    int lastQuote = result.lastIndexOf('\"');
    int strLength = inputStr.length();
    if (firstQuote == 0 && lastQuote == strLength - 1) {
        result = result.substring(1, strLength - 1);
    }
    return result;
}

Ответ 11

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

"[^\"][\\p{Print}]*[^\"]"

Ответ 12

Чтобы удалить одну или несколько двойных кавычек из начала и конца строки в Java, вам необходимо использовать решение на основе регулярных выражений:

String result = input_str.replaceAll("^\"+|\"+$", "");

Если вам нужно также удалить одинарные кавычки:

String result = input_str.replaceAll("^[\"']+|[\"']+$", "");

ПРИМЕЧАНИЕ. Если ваша строка содержит " внутри, этот подход может привести к проблемам (например, "Name": "John" = > Name": "John).

Смотрите Java-демо здесь:

String input_str = "\"'some string'\"";
String result = input_str.replaceAll("^[\"']+|[\"']+$", "");
System.out.println(result); // => some string

Ответ 13

Модифицируя ответ @brcolow немного

if (string != null && string.length() >= 2 && string.startsWith("\"") && string.endsWith("\"") {
    string = string.substring(1, string.length() - 1);
}

Ответ 14

найдите индексы каждой двойной кавычки и вставьте туда пустую строку.

Ответ 15

Matcher m = Pattern.compile("^\"(.*)\"$").matcher(value);
String strUnquoted = value;
if (m.find()) {
    strUnquoted = m.group(1);
}

Ответ 16

Отредактировано: только что понял, что я должен указать, что это работает, только если они оба существуют. В противном случае строка не считается кавычкой. Такой сценарий появился у меня при CSV файлах.

org.apache.commons.lang3.StringUtils.unwrap("\"abc\"", "\"")    = "abc"
org.apache.commons.lang3.StringUtils.unwrap("\"abc", "\"")    = "\"abc"
org.apache.commons.lang3.StringUtils.unwrap("abc\"", "\"")    = "abc\""