如何获取字符的Unicode属性?Python标点识别功能的JavaScript实现方法
在JavaScript中判断字符的Unicode属性(对标Python unicodedata)
当然可以用JavaScript实现这个功能!下面我会给出两种方案,分别对应快速判断需求和完全对标Python的实现逻辑:
方案1:用原生正则快速判断开头是否为标点
如果你只是需要判断字符串开头是否是标点字符(和你Python代码里的逻辑一致),直接用Unicode属性类正则就可以搞定,ES2018及以上的浏览器和Node.js都支持这个特性:
const _string = '¿para qué?'; // \p{P} 匹配所有Unicode标点字符,u标志开启Unicode模式 if (/^\p{P}/u.test(_string)) { console.log('Punctuation at beginning of string.'); }
这里的\p{P}涵盖了所有以P开头的Unicode标点类别(包括Pc连接标点、Pd Dash标点、Ps起始标点、Pe结束标点、Pi初始引号、Pf最终引号、Po其他标点),和你Python代码里UD.category(...).startswith('P')的判断范围完全一致。
方案2:完全对标Python unicodedata的实现
如果你需要像Python那样获取字符的具体Unicode类别代码(比如¿的类别是Po),原生JavaScript没有内置的对应API,但可以使用第三方库unicodedata-js,它的API设计和Python的unicodedata包几乎一模一样:
- 先安装库(Node.js环境):
npm install unicodedata-js
- 然后编写代码:
import * as UD from 'unicodedata-js'; const _string = '¿para qué?'; const category = UD.category(_string[0]); if (category.startsWith('P')) { console.log('Punctuation at beginning of string.'); }
这段代码的逻辑和你给出的Python代码完全一致,完美实现了相同的功能。
内容的提问来源于stack exchange,提问作者user3057006
相关产品推荐
相关产品推荐

