【问题标题】:Javascript check if character is 32bitJavascript检查字符是否为32位
【发布时间】:2016-07-19 17:11:51
【问题描述】:

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

【问题讨论】:

  • 请定义一个示例“32位字符”。

标签: javascript unicode


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    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);
    

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多