Reputation: 81
I have data from a CSV file that is enclosed in single quotes, like:
'Company name'
'Price: $43.50'
'New York, New York'
I want to be able to replace the single quotes at the start/end of the value but leave quotes in the data, like:
'Joe's Diner' should become Joe's Diner
I can do
updateString = theString.replace("^'", "").replace("'$", "");
but I wanted to know if I could combine it to only do one replace.
Upvotes: 8
Views: 13467
Reputation: 3419
You can use regex to remove double quotes around digits/numbers.
jsonString.replaceAll("\"(\\d+)\"","$1");
above will not work if negative numbers are present.
for negative numbers, the regex will be a little complex like below. But I haven't tried it.
"([0-9]+\.{0,1}[0-9]*)"
Upvotes: 0
Reputation: 4854
You could use the or operator.
updateString = theString.replaceAll("(^')|('$)","");
See if that works for you :)
Upvotes: 17
Reputation: 285047
updateString = theString.replaceFirst("^'(.*)'$", "$1");
Note that the form you have no won't work because replace
uses literal strings, not regexes.
This works by using a capturing group (.*)
, which is referred to with $1
in the replacement text. You could also do something like:
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);
Of course, if you're certain there's a single quote at the beginning and end, the simplest solution is:
updateString = theString.substring(1, theString.length() - 1);
Upvotes: 1