Java Regex для удаления запускает/заканчивает одинарные кавычки, но отпуск в кавычках

У меня есть данные из файла CSV, который включается в одинарные кавычки, как:

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

Я хочу смочь заменить одинарные кавычки при запущении/заканчивании значения, но кавычек отпуска в данных, как:

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

Я могу сделать

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

но я хотел знать, мог ли я объединить его, чтобы только сделать одну замену.

7
задан finnw 23 July 2010 в 17:35
поделиться

2 ответа

Можно использовать оператор or.

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

Посмотрите, сработает ли это для вас :)

16
ответ дан 6 December 2019 в 11:45
поделиться
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
ответ дан 6 December 2019 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: