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


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

14 99

14 ответов:

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

например.

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

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

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

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

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

С помощью гуавы вы можете писать более элегантно 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
}