Answers:
您可以为此使用String#replaceAll()
模式^\"|\"$
。
例如
string = string.replaceAll("^\"|\"$", "");
要了解有关正则表达式的更多信息,请访问http://regular-expression.info。
也就是说,这有点像您要发明CSV解析器的味道。如果是这样,我建议您四处看看现有的库,例如OpenCSV。
String#indexOf()
,String#substring()
,方法等。速度只有一点点加快,但是代码更多。@GK:嗯,您是否阅读/理解了正则表达式,甚至进行了测试?
^\"|\"$
。|
表示“或”。因此它将匹配^\"
或\"$
。^
匹配字符串的开头和字符串$
的结尾。^\"
表示在字符串的开头\"$
匹配一个引号,并在字符串的末尾匹配一个引号。
要从字符串中删除第一个字符和最后一个字符,请使用:
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
如我的示例所示,此方法适用于带引号和不带引号的字符串。唯一的缺点是,它将不会查找严格匹配的引号,而只会查找前导和尾随的引号字符(即,"partially
与"fully"
引号字符串之间没有区别)。
如果双引号仅出现在开头和结尾,那么一个简单的代码就可以完美地工作:
string = string.replace("\"", "");
这是我发现从字符串的开头和结尾去除双引号的最佳方法。
someString.replace (/(^")|("$)/g, '')
使用番石榴,您可以写得更优雅 CharMatcher.is('\"').trimFrom(mystring);
在Kotlin中,您可以使用String.removeSurrounding(delimiter: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
}
removeSurrounding()
我在上面共享的方法对我来说也是一种Java开发人员都可以轻松理解的方法。
斯卡拉
s.stripPrefix("\"").stripSuffix("\"")
不管字符串的开头和/或结尾是否带引号,此方法都有效。
编辑:对不起,仅Scala
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中字符串的开头和结尾删除一个或多个双引号,您需要使用基于正则表达式的解决方案:
String result = input_str.replaceAll("^\"+|\"+$", "");
如果您还需要删除单引号:
String result = input_str.replaceAll("^[\"']+|[\"']+$", "");
注意:如果您的字符串包含"
在其中,则此方法可能会导致问题(例如"Name": "John"
=> Name": "John
)。
String input_str = "\"'some string'\"";
String result = input_str.replaceAll("^[\"']+|[\"']+$", "");
System.out.println(result); // => some string