dapengde 这个问题我估计很难有精确解。近似解是把字符转化为 UTF8 编码,然后看对应的整数码在不在中文的区间内。问题是 UTF8 中中文通常是和韩日文在一起统称 CJK,并没有专门的针对中文开辟一个区间。参见:https://stackoverflow.com/q/1366068/559676 答主提到常见 CJK 字符的区间是 4E00-9FFF,这是十六进制的数字,翻译为整数是:
> strtoi(c('4E00', '9FFFF'), 16L)
[1] 19968 655359
你可以转几个字符看看,比如:
> utf8ToInt('你好,OK')
[1] 20320 22909 65292 79 75
其中“你好”在 [19968, 655359] 范围内,说明它们是常见 CJK 字符。剩下的逗号是标点,OK 是英文字符,都不在这个区间内。
我能想到的精确解就是找个包含所有中文字符的字典(计算机意义上的字典,不是物理意义的字典)然后暴力搜。
当然,别的社区可能已经有很好的答案了。R 里面的中文毕竟还是小众,我没太听说过谁研究这个问题。