Je dois diviser une chaîne et extraire les mots séparés par des caractères d'espacement. La source peut être en anglais ou en japonais. Les caractères d'espaces blancs anglais incluent l'onglet et l'espace, et le texte japonais les utilise également. (IIRC, tous les jeux de caractères japonais largement utilisés sont des surensembles de US-ASCII.)Quels sont tous les caractères d'espaces blancs japonais?
Donc l'ensemble de caractères que j'ai besoin d'utiliser pour séparer ma chaîne comprend un espace ASCII normal et une tabulation. Mais, en japonais, il existe un autre caractère d'espace, communément appelé «espace pleine largeur». Selon l'utilitaire Character Viewer de mon Mac, c'est U + 3000 "IDEOGRAPHIC SPACE". C'est (généralement) ce qui se passe lorsqu'un utilisateur appuie sur la barre d'espace tout en tapant en mode de saisie japonais.
Y a-t-il d'autres caractères à prendre en compte?
Je suis en train de traiter des données textuelles soumises par des utilisateurs à qui on a demandé de "séparer les entrées avec des espaces". Cependant, les utilisateurs utilisent une grande variété de systèmes d'exploitation pour ordinateurs et téléphones mobiles pour soumettre ces textes. Nous avons déjà vu que les utilisateurs peuvent ne pas savoir s'ils sont en mode de saisie japonais ou anglais lors de la saisie de ces données. En outre, le comportement de la clé spatiale diffère entre plates-formes et applications même en mode japonais (par exemple, Windows 7 insérera un espace idéographique mais iOS insérera un espace ASCII). Donc ce que je veux, c'est fondamentalement "l'ensemble de tous les caractères qui ressemblent visuellement à un espace et qui peuvent être générés lorsque l'utilisateur appuie sur la touche espace, ou sur la touche tabulation car de nombreux utilisateurs ne connaissent pas la différence un onglet, en japonais et/ou en anglais ".
Y a-t-il une réponse faisant autorité à une telle question?
Aucun langage de programmation avec un support Unicode correct ne devrait-il vous permettre de diviser une chaîne (en utilisant une regex) sur un espace? Par exemple - '/ \ s /' correspond aux caractères espaces en JavaScript (équivalent à '[\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029]'). –
Matt: L'expression rationnelle que vous avez citée est déjà manquante '\ u3000' et l'OP se demande ce qui pourrait manquer. La liste d'espace séparateur Unicode a 18 entrées: http://www.fileformat.info/info/unicode/category/Zs/list.htm – Gabe
Matt: Oui, je souhaite, mais la notion que JavaScript (et, étonnamment, même Ruby) A propos de ce qui constitue un 'espace blanc' générique n'inclut pas le caractère d'espace blanc japonais (s?). Gabe: merci pour ce lien, fouiller manuellement dans mon viewer Unicode je suis tombé sur EM SPACE, FIGURE SPACE et ses amis, mais je n'avais pas rencontré OGHAM SPACE MARK ou MONGOLIAN VOWEL SEPARATOR ... – Mason