Я ищу эффективный способ взять строку JavaScript и вернуть все скрипты. которые встречаются в этой строке.
Полный UTF-16, включая символы «астрального» плана/не-BMP, для которых требуются суррогатные пары, должен обрабатываться правильно. Возможно, это главная проблема, поскольку JavaScript не поддерживает UTF-16.
Он должен иметь дело только с кодовыми точками, поэтому не требуется причудливая осведомленность о сложных сценариях или кластерах графем. (В любом случае, для некоторых из вас это будет очевидно.)
Пример:
stringToIso15924("παν語");
вернет что-то вроде:
[ "Grek", "Hani" ]
Я использую node.js и некоторые библиотеки Unicode, такие как XRegExp и unorm, поэтому я не возражаю против добавления других библиотек, которые уже могут обрабатывать или упрощать такую функцию.
Я не знаю библиотеки JavaScript, которая может искать свойства символов, такие как коды сценариев, так что это, вероятно, вторая часть проблемы.
Третья часть проблемы заключается в том, чтобы просто избежать неэффективности.
[{start: 0x0000, end: 0x0040, script: 'Common'}, {start: 0x0041, end: 0x005A, script: 'Latin'}, ...]
, чтобы вы могли найти свой скрипт. Если битых групп очень много, может быть стоит массив с индексом для каждого символа, но это будет занимать много памяти (обменивается на cpu). Для получения результатов просто добавьте имена скриптов в качестве ключей к пустому объекту, а затем просто выполнитеObject.keys
- person Paul S.   schedule 09.05.2013