Мне нужно разбить строку и извлечь слова, разделенные пробельными символами. Источник может быть на английском или японском. Английские символы пробелов включают в себя вкладку и пробел, а японский текст также использует их. (IIRC, все широко используемые японские наборы символов являются надмножествами US-ASCII.)Что все японские символы пробелов?
Таким образом, набор символов, которые мне нужно использовать для разделения строки, включает в себя обычное пространство ASCII и вкладку.
Но на японском языке существует еще один космический символ, обычно называемый пространством полной ширины. Согласно моей утилите просмотра персонажей Mac, это U + 3000 «IDEOGRAPHIC SPACE». Это (обычно), что приводит к тому, что пользователь нажимает пробел при вводе в японский режим ввода.
Есть ли другие символы, которые мне нужно учитывать?
Я обрабатываю текстовые данные, представленные пользователями, которым было сказано «отдельные записи с пробелами». Тем не менее, пользователи используют самые разные компьютерные и мобильные операционные системы для отправки этих текстов. Мы уже видели, что пользователи могут не знать, находятся ли они в японском или английском режиме ввода при вводе этих данных.
Кроме того, поведение ключа пространства различается по платформам и приложениям даже в японском режиме (например, Windows 7 вставляет идеографическое пространство, но iOS будет вставлять пространство ASCII).
Так что я хочу в основном «набор всех символов, которые визуально выглядят как пространство и могут быть сгенерированы, когда пользователь нажимает клавишу пробела или клавишу табуляции, поскольку многие пользователи не знают разницы между пространством и вкладка на японском и/или английском языках ».
Есть ли авторитетный ответ на такой вопрос?
Не следует ли использовать какой-либо язык программирования с надлежащей поддержкой Unicode, чтобы вы разделили строку (используя регулярное выражение) на пробелы? Например - `/ \ s /` соответствует символам пробела в JavaScript (эквивалентно `[\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029]`). – 2010-11-29 05:08:32
Мэтт: Регулярное выражение, которое вы цитируете, уже отсутствует `\ u3000`, и ОП задается вопросом, что еще может быть отсутствовать. Список пространств разделителей Unicode имеет 18 записей: http://www.fileformat.info/info/unicode/category/Zs/list.htm – Gabe 2010-11-29 05:28:42