Я хотел бы обрезать начало и конец двойной кавычки (") из строки.
Как я могу достичь этого в 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\""