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