2010-05-13 16 views
11

¿Cómo convierto las comillas y apóstrofes de MS Word a comillas regulares y apóstrofos en Java? ¿Cuál es el número Unicode para estos personajes?Convertir citas de palabras MS y apóstrofes

es decir, “¿cómo estás?” ‘Hola’

a

"¿cómo estás?" 'Hola'

Gracias

Editar: Parece que StackOverflow ya es convertir a las citas regulares y apóstrofes ... ¿cómo puedo lograr lo mismo en Java?

+0

No se convierten aquí, las 'citas inteligentes' están bien. StackOverflow convierte las comillas simples en "" en los títulos de las preguntas (polémicamente), pero deja solo el texto de la pregunta. – bobince

+0

Por cierto, ¿existe realmente una buena razón para reemplazarlos con comillas simples? No son personajes especiales de "MS Word", son caracteres Unicode perfectamente válidos que normalmente deberían manejarse bien con cualquier aplicación que pueda manejar Unicode. – bobince

+0

@bobince no todas las aplicaciones manejan unicode correctamente, pero a menudo las personas pegan texto que escribieron en ms-word y es bueno poder conservar las comillas (convirtiéndolas en comillas regulares) que quitarlas por completo. – dan

Respuesta

9

Aquí hay un enlace muy útil para todos los que se ocupan de Unicode: Unicode codepoint lookup/search tool.

La búsqueda de "comilla" da

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

Hay several other quote-like symbols que podría considerar la sustitución.

+1

Enlace roto :-( – mjaggard

+3

Gracias, lo corrigió. – Thomas

+1

Gracias :-) :-) – mjaggard

11

Dejar de tomar la respuesta de Thomas, el código es:

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

Gracias a Nick van Esch en C# How to replace Microsoft's Smart Quotes with straight quotation marks?

Aquí está el código ('\ u2019' es 'en MS Word), es útil porque cubre personajes problemáticos de palabras

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', '\"'); 
+0

En la respuesta anterior, estamos mencionando todas las comillas de MS Word. ¿No hay un código simple que reemplace todas las citas de MS Word con comillas rectas? Quiero decir, ¿cómo podemos enumerar todas las citas de MS Word? –

+0

@ Finland Mittal: Hasta donde yo sé, esta es la forma más sencilla. – 123iamking

Cuestiones relacionadas