tutorial the stanford spanish natural language corenlp java string nlp

the - Problema recorte cadena japonesa en java



stanford nlp jar (5)

De los documentos de Java, explica por qué esto no funciona.

Si este objeto String representa una secuencia de caracteres vacía, o los caracteres primero y último de la secuencia de caracteres representados por este objeto String tienen códigos superiores a ''/ u0020'' (el carácter espacio), se devuelve una referencia a este objeto String.

Puede imitar su propia versión con la suficiente facilidad. quizás el método codePointAt podría usarse para este propósito.

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

Tengo la siguiente cadena (en japonés) "ユ ー ザ,,", el primer carácter es "como" espacios en blanco, pero su número en Unicode es 12288, así que si hago "ユ ー..." .trim () obtengo la misma cadena (trim doesn '' t trabajo). Si recorte en c ++, funciona bien. ¿Alguien sabe cómo resolver este problema en Java? ¿Hay un método de recorte especial para Unicode?


Eche un vistazo a la Normalización Unicode y la clase Normalizador . La clase es nueva en Java 6, pero encontrará una versión equivalente en la biblioteca ICU4J si está en un JRE anterior.

int character = 12288; char[] ch = Character.toChars(character); String input = new String(ch); String normalized = Normalizer.normalize(input, Normalizer.Form.NFKC); System.out.println("Hex value:/t" + Integer.toHexString(character)); System.out.println("Trimmed length :/t" + input.trim().length()); System.out.println("Normalized trimmed length:/t" + normalized.trim().length());


Pruebe la clase StringUtils de Apache Commons. El método StringUtils.strip () debería funcionar para usted.


Tendrá que escribir su propio método trim() basado en Character.isWhitespace() : desafortunadamente, trim() no hace lo que afirma su doc ​​API: solo elimina espacios ASCII, no cualquier otro tipo de espacio en blanco.


Como alternativa a la clase StringUtils mencionada por Mike, también puede usar una expresión regular con StringUtils Unicode, utilizando solo bibliotecas propias de Java:

" ユーザー名".replaceAll("//p{Z}", "")

O, para realmente solo recortar, y no eliminar espacios en blanco dentro de la cadena:

" ユーザ ー名 ".replaceAll("(^//p{Z}+|//p{Z}+$)", "")