转换MS词“卷曲”引号和撇号

时间:2010-05-13 10:58:36

标签: ms-word quotes

如何在Java中将MS Word引号和撇号转换为常规引号和撇号字符?这些角色的unicode号码是什么?

  

“你好吗?”

     

“你好”

由于Stack Overflow自动修复它们,这里是它们在编辑器中的显示方式

Curly Quotes

  

“你好吗?”

     

'你好'

3 个答案:

答案 0 :(得分:14)

离开托马斯的回答,代码是:

return text.replaceAll("[\\u2018\\u2019]", "'")
           .replaceAll("[\\u201C\\u201D]", "\"");

答案 1 :(得分:11)

这是处理Unicode的每个人的非常有用的链接:Unicode codepoint lookup/search tool

搜索“引号”给出了

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

您可以考虑替换several other quote-like symbols

答案 2 :(得分:5)

感谢Nick van Esch C# How to replace Microsoft's Smart Quotes with straight quotation marks?

这是代码('\ 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', '\"');