Java Regex删除开始/结束单引号但留下引号

时间:2010-07-23 02:47:00

标签: java regex csv replace

我有来自CSV文件的数据,该文件用单引号括起来,例如:

'Company name'
'Price: $43.50'
'New York, New York'

我希望能够在值的开头/结尾替换单引号,但在数据中保留引号,例如:

'Joe's Diner'  should become Joe's Diner

我能做到

updateString = theString.replace("^'", "").replace("'$", "");

但我想知道我是否可以将它组合起来只做一次替换。

2 个答案:

答案 0 :(得分:16)

您可以使用运算符。

updateString = theString.replaceAll("(^')|('$)","");

看看它是否适合你:)

答案 1 :(得分:1)

updateString = theString.replaceFirst("^'(.*)'$", "$1");

请注意,您没有的表单将无效,因为replace使用文字字符串,而不是正则表达式。

这可以通过使用捕获组(.*)来实现,该替换文本中的$1引用了该组Pattern patt = Pattern.compile("^'(.*)'$"); // could be stored in a static final field. Matcher matcher = patt.matcher(theString); boolean matches = matcher.matches(); updateString = matcher.group(1); 。你也可以这样做:

updateString = theString.substring(1, theString.length() - 1);

当然,如果您确定在开头和结尾都有单引号,那么最简单的解决方案是:

{{1}}