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

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

14 ответов


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

Э. Г.

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

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

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


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

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

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


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

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

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

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


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

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

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


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;
}

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

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

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

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

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

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

Примечание: если ваша строка содержит " внутри, такой подход может привести к проблемам (например,"Name": "John" =>Name": "John).

посмотреть Java demo здесь:

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

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


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

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

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

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


Котлин

в Котлине вы можете использовать строку.removeSurrounding (разделитель: CharSequence)

Э. Г.

string.removeSurrounding("\"")

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

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

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
}