Necesito dividir una cadena y extraer palabras separadas por espacios en blanco. La fuente puede estar en inglés o japonés. Los espacios en blanco en inglés incluyen tabulación y espacio, y el texto en japonés también los usa. (IIRC, todos los juegos de caracteres japoneses ampliamente utilizados son superconjuntos de US-ASCII.)¿Cuáles son todos los caracteres japoneses de espacios en blanco?
Así que el conjunto de caracteres que necesito usar para dividir mi cadena incluye el espacio y la pestaña ASCII normales.
Pero, en japonés, hay otro carácter de espacio, comúnmente llamado 'espacio de ancho completo'. De acuerdo con la utilidad del Visor de caracteres de mi Mac, este es U + 3000 "ESPACIO IDEOGRÁFICO". Esto es (generalmente) lo que resulta cuando un usuario presiona la barra espaciadora mientras escribe en el modo de entrada japonés.
¿Hay algún otro personaje que deba tener en cuenta?
Estoy procesando datos textuales enviados por usuarios a quienes se les ha dicho que "marquen entradas con espacios". Sin embargo, los usuarios están usando una gran variedad de sistemas operativos de computadoras y teléfonos móviles para enviar estos textos. Ya hemos visto que los usuarios pueden no estar al tanto de si están en modo de entrada japonés o inglés al ingresar estos datos.
Además, el comportamiento de la clave de espacio difiere entre plataformas y aplicaciones incluso en modo japonés (por ejemplo, Windows 7 insertará un espacio ideográfico pero iOS insertará un espacio ASCII).
Así que lo que quiero es básicamente "el conjunto de todos los caracteres que parecen un espacio y pueden generarse cuando el usuario presiona la tecla espacio, o la tecla tab, ya que muchos usuarios no conocen la diferencia entre un espacio y una pestaña, en japonés y/o en inglés ".
¿Hay alguna respuesta autorizada a tal pregunta?
¿No debería un lenguaje de programación con compatibilidad Unicode adecuada simplemente dejar dividir una cadena (utilizando una expresión regular) en espacios en blanco? Por ejemplo, '/ \ s /' coincide con los espacios en blanco de los caracteres en JavaScript (equivalente a '[\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029]'). –
Matt: La expresión regular que citó ya no aparece '\ u3000' y OP se pregunta qué más podría faltar. La lista de espacios separadores Unicode tiene 18 entradas: http://www.fileformat.info/info/unicode/category/Zs/list.htm – Gabe
Matt: Sí, deseo, pero la noción de que JavaScript (y sorprendentemente, incluso Ruby) tiene acerca de lo que constituye un 'espacio en blanco' genérico que no incluye el carácter de espacio en blanco japonés (s?). Gabe: gracias por ese enlace, hurgando manualmente en mi visor Unicode, había tropezado con EM SPACE, FIGURE SPACE y mis amigos, pero no había encontrado OGHAM SPACE MARK o MONGOLIAN VOWEL SEPARATOR ... – Mason