2010-07-23 17 views
7

ben gibi, tek tırnak içine alınmış bir CSV dosyasından veri vardır:Java Regex başlangıç ​​/ bitiş tek tırnak kaldırmak ama içinde terk etmek tırnak

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

Ben de tek tırnak yerine isterler Ben

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

yapabilirsiniz

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

ama istediğim: değerin başlangıç ​​/ bitiş ama gibi verilerdeki tırnak bırakın Sadece bir tane yerine koymak için birleştirebilir miyim biliyorum.

+0

Sen dengesiz tırnak izin vermek istediğiniz * ve * bir hücre içindeki virgüllerden kaçmak için tırnak işaretleri kullanın? Her ikisini birden yapmak mümkün değildir. – finnw

+0

Evet, bunları kolayca birleştirebilirsiniz. Josiah'ın cevabına bir bakın, şimdi doğru yöntemi kullanıyor. –

cevap

16

veya işlecini kullanabilirsiniz. Bu sizin için çalışıyorsa :)

+0

Değiştirmek için onu değiştirmek zorundaydım, ama sonra işe yaradı. Cevabınızı güncellerseniz, – George

+0

kabul ettiğim için çok memnun oldum :) – Josiah

+0

Bunun tam tersine ihtiyacım var. Bu // * [@ text = 'some'Text'] - // * [@ text = 'some \' Text ']' i dönüştürmek istiyorum – vaibhavcool20

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

Not

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

görün o form replace edebi dizeleri değil, regexes kullandığı için hiçbir işe yaramaz var.

Bu, $1 yerine geçen metinde bir yakalama grubu (.*) kullanarak çalışır. Eğer başında ve sonunda bir tek tırnak var eminseniz, en basit çözümdür Tabii

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

:: Ayrıca böyle bir şey yapabileceğini

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