Javascript检查字符是否为32位

时间:2016-03-31 10:02:22

标签: javascript unicode

使用javascript,我想检查某个字符是否是32位?我该怎么做 ?我尝试使用charCodeAt(),但它没有为32位字符工作。
任何建议/帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

charCodeAt() docs返回0到65535之间的整数(FFFF),表示UTF-16代码单元。 如果您想要整个代码点值,请使用codePointAt()
您可以使用string.codePointAt(pos)轻松检查字符是否由1或2个代码点值表示。 大于FFFF的值意味着它们占用2个代码单元,总共32位。



function is32Bit(c) {
  return c.codePointAt(0) > 0xFFFF;
}

alert(is32Bit(""));         // true
alert(is32Bit("a"));          // false
alert(is32Bit("₩"));         // false




注意:ECMAScript 6中提供了 codePointAt(),因此这可能不适用于所有浏览器。对于ECMAScript 6支持,请检查firefoxchrome

答案 1 :(得分:0)

function characterInfo(ch) {
    function is32Bit(ch) {
        return ch.codePointAt(0) > 0xFFFF;
    }

let result =    `character: ${ch}\n` +
                `CPx0: ${ch.codePointAt(0)}\n`;
if(ch.codePointAt(1)) {
    result += `CPx1: ${ch.codePointAt(1)}\n`;
}
console.log( result += is32Bit(ch) ?
    'Is 32 bit character.' :
    'Is 16 bit character.');
}

//For testing

let ch16 = String.fromCodePoint(10020);
let ch32 = String.fromCodePoint(134071);
characterInfo(ch16);
characterInfo(ch32);