我想从一个字符串中删除开头和结尾的双引号 (")。
如何在Java中实现?谢谢!
String#replaceAll()
方法,将模式设置为 ^\"|\"$
实现此功能。string = string.replaceAll("^\"|\"$", "");
如果想要了解更多关于正则表达式的内容,可以参考http://regular-expression.info。
话虽如此,这有点像你正在尝试发明一个CSV解析器。如果是这样,我建议查找现有的库,比如OpenCSV。
^\"|\"$
。|
表示 "或"。因此,它将匹配 ^\"
或 \"$
。^
匹配字符串的开头,而 $
匹配字符串的结尾。^\"
意味着匹配字符串开头处的引号,\"$
则匹配字符串末尾处的引号。 - ibizaman要从字符串中删除第一个字符和最后一个字符,请使用:
myString = myString.substring(1, myString.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
这种方法适用于有引号和无引号的字符串,就像我的示例一样。唯一的缺点是,它不会严格查找匹配的引号,只查找前导和尾随引号字符(即在"部分
和"完全"
引用字符串之间没有区别)。
在 Kotlin 中,您可以使用 String.removeSurrounding(delimiter: 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
}
string = string.replace("\"", "");
这是我发现的最佳方法,用于从字符串的开头和结尾去除双引号。
someString.replace (/(^")|("$)/g, '')
首先,我们会检查字符串是否用双引号括起来,如果是的话就将其去掉。如果你确定它是双引号括起来的,那么可以跳过这个条件判断。
if (string.length() >= 2 && string.charAt(0) == '"' && string.charAt(string.length() - 1) == '"')
{
string = string.substring(1, string.length() - 1);
}
使用 Guava 可以更优雅地编写 CharMatcher.is('\"').trimFrom(mystring);
我使用的东西就是这么简单:
if(str.startsWith("\"") && str.endsWith("\""))
{
str = str.substring(1, str.length()-1);
}
要从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