2011-11-20 12 views
10

Mi pregunta se refiere al método replaceAll de la clase String.la expresión regular correcta para reemplazar em-dash con un "-" básico en java

Mi propósito es reemplazar todos los em-guiones en un texto con un "-" básico. Sé que el carácter Unicode de em-dash es \ u2014.

lo probé de la siguiente manera:

String s = "asd – asd"; 
s = s.replaceAll("\u2014", "-"); 

Aún así, el guión largo no se sustituye. ¿Qué es lo que estoy haciendo mal?

+0

va a sustituir \ u2014 con - en el asd cadena - asd, donde no hay cadena \ u2014 se encuentra –

+0

hay uno, crea y se copia una directamente de la palabra de ms – user975705

Respuesta

21

Edición menor después de la pregunta de edición:

Es posible que no esté utilizando un guión largo en absoluto. Si no está seguro de lo que tiene, una buena solución es simplemente buscar y reemplazar todos los guiones ... em o no. Echar un vistazo a this answer, se puede tratar de utilizar la Unicode dash punctuation property para todos los guiones ==>\\p{Pd}

String s = "asd – asd"; 
s = s.replaceAll("\\p{Pd}", "-"); 

Working example sustitución de un guión largo y Tablero regular tanto con el código de seguridad.

Referencias:
public String replaceAll(String regex, String replacement)
Unicode Regular Expressions

+0

probado en los dos formas. Aún así no solucionó el problema. – user975705

+0

@ user975705 - He editado ... ¿qué tal ahora? –

+0

¡Eso hizo el truco! ¡Gracias! – user975705

2

String.replaceAll toma una expresión regular como primer parámetro. Si lo que desea es reemplazar todas las ocurrencias de un solo carbón por otro char, considerar el uso de String.replace(char, char):

String s = "asd – asd"; 
s = s.replace('\u2014', '-'); 
+0

gracias por una sugerencia. Lo probé, pero aún no reemplazó el em-dash. – user975705

1

It works fine for me. Supongo que no estás usando un em-dash. Prueba copiar y pegar el carácter em-dash del mapa de caracteres en lugar de palabra.

+0

Gracias por indicarme ese sitio (ideone). –

0

Ha confundido los parámetros.
probar este
String s = "asd – asd"; s = s.replaceAll("-", "\u2014");

Cuestiones relacionadas