我想从一个字符串中删除开头和结尾的双引号 (")。
如何在Java中实现?谢谢!
编辑:我意识到我应该明确指出,只有在两者都存在时才有效。否则,该字符串不被视为引用。当我处理 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\""
java.util.regex.Matcher
一起使用时,将匹配双引号之间的任何字符串,而不会影响字符串内部的双引号。"[^\"][\\p{Print}]*[^\"]"
稍作修改
if (string != null && string.length() >= 2 && string.startsWith("\"") && string.endsWith("\"") {
string = string.substring(1, string.length() - 1);
}
@NonNull
进行注释,并且它应该在内部包含类似于Objects.requireNonNull(string)
的内容,因为如果有人调用stripQuotes(null)
,那么他们很可能是出于错误而这样做! - brcolowMatcher m = Pattern.compile("^\"(.*)\"$").matcher(value);
String strUnquoted = value;
if (m.find()) {
strUnquoted = m.group(1);
}
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;
}
找到每个双引号的索引并在那里插入一个空字符串。
public String removeDoubleQuotes(String request) {
return request.replace("\"", "");
}
s.stripPrefix("\"").stripSuffix("\"")
无论字符串开头和/或结尾是否有引号,此方法都有效。
编辑:抱歉,仅适用于Scala。
你可以使用Groovy中的正则表达式从字符串中减去一个子字符串:
String unquotedString = theString - ~/^"/ - ~/"$/