如何从字符串中修剪开始和结束双引号?

时间:2010-04-09 15:27:40

标签: java string trim

我想从字符串中修剪一个开头和结尾的双引号(“) 我怎样才能在Java中实现这一目标?谢谢!

19 个答案:

答案 0 :(得分:221)

您可以使用String#replaceAll()格式为^\"|\"$

E.g。

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

要了解有关正则表达式的更多信息,请访问http://regular-expression.info

那就是说,这有点像你试图发明一个CSV解析器。如果是这样,我建议您四处寻找现有的库,例如OpenCSV

答案 1 :(得分:27)

要从字符串中删除第一个字符和最后一个字符,请使用:

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

答案 2 :(得分:11)

这是我找到的最好的方法,从字符串的开头和结尾删除双引号。

someString.replace (/(^")|("$)/g, '')

答案 3 :(得分:11)

使用Guava,您可以更优雅地编写CharMatcher.is('\"').trimFrom(mystring);

答案 4 :(得分:9)

如果双引号仅存在于开头和结尾,那么一个简单的代码就可以完美地运行:

string = string.replace("\"", "");

答案 5 :(得分: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"引用字符串之间没有区别。)

答案 6 :(得分:6)

首先,我们检查字符串是否加倍引用,如果是,则删除它们。你可以跳过条件,如果实际上你知道它是双引号。

SELECT to_char(trunc(request_date),'YYYY-MM-DD HH24:MI:SS') date_time

答案 7 :(得分:4)

科特林

在Kotlin中,您可以使用String.removeSurrounding(delimiter: CharSequence)

例如

cast worked.gmepch:0x100600030; pch:0x100600038
cast worked.gmepch:0x100600040; pch:0x100600048
cast did not work.gmepch:0x100600260; pch:0x100600260
cast did not work.gmepch:0x100202c30; pch:0x100202c30
cast did not work.gmepch:0x100600270; pch:0x100600270
  

当且仅当该字符串以 delimiter 开头和结束时,才从该字符串的开头和结尾删除给定的 delimiter 字符串。   否则,返回此字符串不变。

源代码如下:

string.removeSurrounding("\"")

答案 8 :(得分:2)

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;
}

答案 9 :(得分:2)

s.stripPrefix("\"").stripSuffix("\"")

无论字符串在开头和/或结尾处是否有引号,都可以使用。

编辑:抱歉,仅限Scala

答案 10 :(得分:2)

下面的模式与boolean condition = foo(); map = map.entrySet().stream().filter(entry -> "PLACEHOLDER".equals(entry.getKey())) .map(key -> { if (condition) { return "Apple"; } else { return "Netflix"; } }).collect(Collectors.toMap(e -> e.getKey(), Map.Entry::getValue)); 一起使用时,将匹配双引号之间的任何字符串,而不会影响字符串中双引号的出现:

java.util.regex.Matcher

答案 11 :(得分:1)

要从Java中的字符串的开头和结尾删除一个或多个双引号,您需要使用基于正则表达式的解决方案:

String result = input_str.replaceAll("^\"+|\"+$", "");

如果您还需要删除单引号:

String result = input_str.replaceAll("^[\"']+|[\"']+$", "");

注意:如果您的字符串中包含",则此方法可能会导致问题(例如"Name": "John" => Name": "John)。

查看Java demo here

String input_str = "\"'some string'\"";
String result = input_str.replaceAll("^[\"']+|[\"']+$", "");
System.out.println(result); // => some string

答案 12 :(得分:1)

我正在使用像这样简单的东西:

if(str.startsWith("\"") && str.endsWith("\""))
        {
            str = str.substring(1, str.length()-1);
        }

答案 13 :(得分:0)

Matcher m = Pattern.compile("^\"(.*)\"$").matcher(value);
String strUnquoted = value;
if (m.find()) {
    strUnquoted = m.group(1);
}

答案 14 :(得分:0)

找到每个双引号的索引并在那里插入一个空字符串。

答案 15 :(得分:0)

编辑:刚刚意识到,我应该指定仅当两者都存在时才有效。否则,该字符串将不被引用。当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\""

答案 16 :(得分:0)

稍微修改@brcolow的答案

if (string != null && string.length() >= 2 && string.startsWith("\"") && string.endsWith("\"") {
    string = string.substring(1, string.length() - 1);
}

答案 17 :(得分:0)

public String removeDoubleQuotes(String request) {
    return request.replace("\"", "");
}

答案 18 :(得分:0)

常规

您可以使用 groovy 中的正则表达式从字符串中减去子字符串:

String unquotedString = theString - ~/^"/ - ~/"$/