目录
字符串的扩展
字符串的Unicode 表示法
String.fromCodePoint()
codePointAt()
1. 首先,任意一个字符(比如数字、英文字符、汉字、符号等)都可以用Unicode的表示方法来表示。 2. 在js里为用“\u”加上四个十六进制字符来表示任意一个字符。 3. 在之前版本的js里,若要用Unicode表示一个字符,可以像以下这么做:console.log("\u0041"); //A 4. 注意,需要补足4位(前面补0)才能正常输出结果,否则会报错; 5. 如果有一个字符超出\u0000~\uFFFF所能表示的范围呢,那么旧版的写法是无法表示出这个字符的(原因是不能识别)。 6. 在ES6中,为了避免这个问题的出现,解决办法是用大括号{}将\u后的编码放在一起。 7. 这样如果不足4位则不用补零,超过4位也无须担心无法解析。如代码:
"\u{41}"; //A "\u{20BB7}"; //��
JavaScript 共有 6 种方法可以表示一个字符
'\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // true '\u007A' === 'z' // true '\u{7A}' === 'z' // true简单来说就是 : 加上大括号,可以显示编码超过65535的字符;
方法:
String.fromCodePoint(num1[, ...[, numN]])说明:
1. 简单来说,这个拿到编码,返回字符,类型是string; 2. 这个和fromCharCode()方法相比,可以返回编码大于65535的字符;
String.fromCodePoint(134071); //��,参数可以是number String.fromCodePoint("0x41"); //A,参数可以是字符串 String.fromCodePoint(65); //A,作为十进制来识别 String.fromCodePoint(0x41); //A,也可以直接是16进制的数字 String.fromCodePoint(0101); //A,也可以是八进制的数字(0开头表示八进制),但注意八进制不能写为字符串 String.fromCodePoint(65, 65, 65); //AAA,多个参数直接被依次解释并放在同一个字符串里
String.fromCharCode(0x20BB7) // "ஷ"
方法 :
str.codePointAt(position)说明:
1. 简单来说,这个方法返回字符串中某个字符的Unicode编码。 2. 参数表示显示哪一个字符,类型是number,第一个字符是0,第二个是1。如果不存在则默认为0 3. 返回值是类型是number,十进制的Unicode编码。 4. 如果找不到(例如返回长度为1的字符串的第二个字符的编码),会返回undefined
'ABC'.codePointAt(); //65 'ABC'.codePointAt(0); //65 'ABC'.codePointAt(1); //66 'ABC'.codePointAt(2); //67 'ABC'.codePointAt(3); //undefined和其类似的有方法 charCodeAt(),但这个只能返回编码是0~65535之间的字符的编码,如果超出这个范围,那么就无法正常显示了。但 codePointAt() 这个方法依然会正确显示结果。