2010-07-23 63 views
7

我有一個CSV文件,該文件是在單引號,像數據:Java的正則表達式來刪除開始/結束單引號,但留下引號內

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

我希望能夠在更換單引號值的開始/結束,但留下的報價數據,如:

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

我可以做

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

但我想知道我是否可以結合它只做一個替換。

+0

要允許不平衡報價*和*使用引號來轉義單元格內的逗號?這是不可能一次完成的。 – finnw 2010-07-23 17:36:51

+0

是的,你可以很容易地結合起來。再看一下@ Josiah的回答,現在他正在使用正確的方法。 – 2010-07-23 22:07:19

回答

16

您可以使用運算符。

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

看看是否能爲你工作:)

+0

我必須將其更改爲全部替換,但之後它才起作用。如果你更新你的答案,我會接受它 – George 2010-07-23 03:26:33

+0

很高興有幫助:) – Josiah 2010-07-23 16:27:03

+0

我需要與此相反。我想將此 // * [@ text ='some'Text'] 轉換爲// * [@ text ='some \'Text'] – vaibhavcool20 2017-06-19 14:12:44

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); 
相關問題