Преобразование MS слова "фигурные" кавычки и апострофы - PullRequest
14 голосов
/ 13 мая 2010

Как преобразовать кавычки и апострофы MS Word в обычные кавычки и символы апострофов в Java? Какой номер Unicode для этих символов?

«Как дела?»

здор`ово '

Так как Stack Overflow автоматически исправляет их, вот как они выглядят в редакторе

Curly Quotes

до

"Как дела?"

'здор`ово'

Ответы [ 3 ]

15 голосов
/ 28 сентября 2011

Исходя из ответа Томаса, код:

return text.replaceAll("[\\u2018\\u2019]", "'")
           .replaceAll("[\\u201C\\u201D]", "\"");
12 голосов
/ 13 мая 2010

Вот очень полезная ссылка для всех, кто имеет дело с Unicode: Инструмент поиска и поиска кодов Unicode .

Поиск "кавычка" дает

‘ (U+2018) LEFT SINGLE QUOTATION MARK
’ (U+2019) RIGHT SINGLE QUOTATION MARK
“ (U+201C) LEFT DOUBLE QUOTATION MARK
” (U+201D) RIGHT DOUBLE QUOTATION MARK

Есть несколько других похожих на кавычки символов , которые вы могли бы подумать о замене.

5 голосов
/ 06 октября 2015

Спасибо Нику ван Эшу на C # Как заменить смарт-цитаты Microsoft прямыми кавычками?

Вот код ('\ u2019' есть 'в MS Word), он полезен, потому что он охватывает проблемные символы слова.

if (buffer.IndexOf('\u2013') > -1) buffer = buffer.Replace('\u2013', '-');
if (buffer.IndexOf('\u2014') > -1) buffer = buffer.Replace('\u2014', '-');
if (buffer.IndexOf('\u2015') > -1) buffer = buffer.Replace('\u2015', '-');
if (buffer.IndexOf('\u2017') > -1) buffer = buffer.Replace('\u2017', '_');
if (buffer.IndexOf('\u2018') > -1) buffer = buffer.Replace('\u2018', '\'');
if (buffer.IndexOf('\u2019') > -1) buffer = buffer.Replace('\u2019', '\'');
if (buffer.IndexOf('\u201a') > -1) buffer = buffer.Replace('\u201a', ',');
if (buffer.IndexOf('\u201b') > -1) buffer = buffer.Replace('\u201b', '\'');
if (buffer.IndexOf('\u201c') > -1) buffer = buffer.Replace('\u201c', '\"');
if (buffer.IndexOf('\u201d') > -1) buffer = buffer.Replace('\u201d', '\"');
if (buffer.IndexOf('\u201e') > -1) buffer = buffer.Replace('\u201e', '\"');
if (buffer.IndexOf('\u2026') > -1) buffer = buffer.Replace("\u2026", "...");
if (buffer.IndexOf('\u2032') > -1) buffer = buffer.Replace('\u2032', '\'');
if (buffer.IndexOf('\u2033') > -1) buffer = buffer.Replace('\u2033', '\"');
...