Как обрезать начало и конец двойных кавычек из строки?
Я хотел бы обрезать начало и конец двойной кавычки ( " ) из строки.
Как я могу достичь этого в Java? Спасибо!
14 ответов
можно использовать String#replaceAll()
С ^\"|\"$
для этого.
Э. Г.
string = string.replaceAll("^\"|\"$", "");
чтобы узнать больше о регулярных выражениях, имейте al ook в http://regular-expression.info.
тем не менее, это пахнет немного похоже на то, что вы пытаетесь изобрести парсер CSV. Если это так, я бы предложил поискать существующие библиотеки, такие как OpenCSV.
чтобы удалить первый и последний символы из строки, используйте:
myString = myString.substring(1, myString.length()-1);
Это лучший способ, который я нашел, чтобы удалить двойные кавычки из начала и конца строки.
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
}