Normalizar este caracter "  "

Buenas tardes

Quiera pedirles ayuda para normalizar un texto que tiene esta molesta flechita  que inserta msdos al unir varios archivos con el comando copy; se que la clase Normalizer ayuda mucho pero no puede tratar este caracter, ya que lo saca igual; intente con esto:

    public static void main(String[] args) {
          System.out.println(formatString("@fůňķŷsdq"));
     }

     public static String formatString(String s) {
         String temp = Normalizer.normalize(s, Normalizer.Form.NFD);
         return temp.replaceAll("[^\\p{ASCII}]", "");
     }

Y tengo como salida:

@funkysdq

Por su atención, muchas gracias
Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Re: «flechita»

¿Te refieres al carácter \u001a? Tal vez quieras probar con:

str = str.replace("\u001a", "");

flechita

Gracias jpaul, Efectivamente es ese caracter XD , disculpa hay alguna forma de saber de que cararcter se trata? , agradezco tu pronta respuesta!

Saludos!

Imagen de Cid

Unicode

Checa esta documentacion

Gracias

Te agradezco por la información, la estoy revisando, de nuevo mil gracias.

Saludos.

marcador

¡De nada! Se dice que \u001a o \x1a es el carácter CTRL+Z. También se utiliza como «marcador» de fin de archivo (en lugar de EOF). Este post puede arrojar más luz al respecto.

código

Por si tienes curiosidad, aquí puedes encontrar el código del copy, aunque es el de FreeDOS, no el de Windows.

muy útil

 

Ese método que mencionas es muy útil, sobretodo cuando estás estudiando un idioma que utiliza glifos con los que no estás familiarizado.

Por ejemplo, الصفحة الرئيسية, que en árabe es “Página de Inicio”, se podría desglosar así (1):

\u0627 ARABIC LETTER ALEF : ا
\u0644 ARABIC LETTER LAM : ل
\u0635 ARABIC LETTER SAD : ص
\u0641 ARABIC LETTER FEH : ف
\u062d ARABIC LETTER HAH : ح
\u0629 ARABIC LETTER TEH MARBUTA : ة
\u0020 SPACE :  
\u0627 ARABIC LETTER ALEF : ا
\u0644 ARABIC LETTER LAM : ل
\u0631 ARABIC LETTER REH : ر
\u0626 ARABIC LETTER YEH WITH HAMZA ABOVE : ئ
\u064a ARABIC LETTER YEH : ي
\u0633 ARABIC LETTER SEEN : س
\u064a ARABIC LETTER YEH : ي
\u0629 ARABIC LETTER TEH MARBUTA : ة

Notas

  1. Utilizando algo similar a:
    str.chars().forEach(value ->
        System.out.printf("\\u%04x %s : %c%n", value, Character.getName(value), (char) value)
    );
Imagen de Cid

Así es

Y antes de Java 7 te tenías que aventar el mapeo de todos los idiomas a pelo imagino yo, no jpaul ?

Utilizabas una librería

Utilizabas una librería (p.ej.: ICU4J, esa que aparece como una respuesta a la pregunta de Stack Overflow que vinculaste). También podías consultar las tablas.

Aunque Character.getName(int) es un gran adelanto, no ayuda mucho con los caracteres chinos, p.ej.: \u9996 CJK UNIFIED IDEOGRAPHS 9996 : 首. En ese caso, puede ser más conveniente consultar sitios como https://codepoints.net/.