Este dilema se puede resolver de variadas maneras, pero te mostramos la que en nuestra opinión es la solución más completa.
los static String.fromCharCode()
método devuelve un string creado a partir de la secuencia especificada de unidades de código UTF-16.
Sintaxis
String.fromCharCode(num1) String.fromCharCode(num1, num2) String.fromCharCode(num1, num2,..., numN)
Parámetros
num1, ..., numN
- Una secuencia de números que son unidades de código UTF-16. El rango está entre
0
y65535
(0xFFFF
). Números mayores que0xFFFF
están truncados. No se realizan comprobaciones de validez.
Valor de retorno
A string de longitud N
que consiste en el N
unidades de código UTF-16 especificadas.
Descripción
Este método devuelve un string y no un String
objeto.
Porque fromCharCode()
es un static método de String
siempre lo usas como String.fromCharCode()
más que como un método de String
objeto que creaste.
Devolución de caracteres suplementarios
En UTF-16, los caracteres más comunes se pueden representar mediante un solo valor de 16 bits (es decir, una unidad de código). Sin embargo, este conjunto de caracteres, conocido como Base Multilingual Plane (BMP), solo es 1/17el del total de puntos de código Unicode direccionables. Los puntos de código restantes, en el rango de 65536
(0x010000
) para 1114111
(0x10FFFF
) se conocen como caracteres suplementarios. En UTF-16, los caracteres complementarios están representados por dos unidades de código de 16 bits, conocidas como sustitutos, que se reservaron para este propósito. Una combinación válida de dos sustitutos utilizados para representar un carácter complementario se conoce como par sustituto.
Porque fromCharCode()
solo funciona con valores de 16 bits (igual que el u
secuencia de escape), se requiere un par suplente para devolver un carácter suplementario. Por ejemplo, ambos String.fromCharCode(0xD83C, 0xDF03)
y uD83CuDF03
punto de código de retorno U+1F303
“Noche de Estrellas”.
Si bien existe una relación matemática entre el valor del punto de código suplementario (p. ej. 0x1F303
) y ambos valores sustitutos que lo representan (p. ej., 0xD83C
y 0xDF03
), requiere un paso adicional para calcular o buscar los valores del par suplente cada vez que se utiliza un punto de código complementario. Por esta razón, es más conveniente usar String.fromCodePoint()
(parte del estándar ES2015), que permite devolver caracteres adicionales en función de su valor de punto de código real. Por ejemplo, String.fromCodePoint(0x1F303)
devuelve el punto de código U+1F303
“Noche de Estrellas”.
Ejemplos
Usando fromCharCode()
Los caracteres BMP, en UTF-16, usan una sola unidad de código:
String.fromCharCode(65,66,67);// returns "ABC" String.fromCharCode(0x2014);// returns "—" String.fromCharCode(0x12014);// also returns "—"; the digit 1 is truncated and ignored String.fromCharCode(8212);// also returns "—"; 8212 is the decimal form of 0x2014
Los caracteres complementarios, en UTF-16, requieren dos unidades de código (es decir, un par sustituto):
String.fromCharCode(0xD83C,0xDF03);// Code Point U+1F303 "Night with String.fromCharCode(55356,57091);// Stars" == "uD83CuDF03" String.fromCharCode(0xD834,0xDF06,0x61,0xD834,0xDF07);// "uD834uDF06auD834uDF07"
Especificaciones
Especificación |
---|
ECMAScript (ECMA-262) La definición de ‘String.fromCharCode’ en esa especificación. |
Compatibilidad del navegador
Escritorio | Móvil | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Cromo | Borde | Firefox | explorador de Internet | Ópera | Safari | WebView Android | cromo androide | Firefox para Android | Ópera Android | Safari en IOS | Samsung Internet | |
fromCharCode |
1 | 12 | 1 | 4 | 4 | 1 | 1 | 18 | 4 | 10.1 | 1 | 1.0 |
Ver también
String.fromCodePoint()
String.prototype.charAt()
String.prototype.charCodeAt()
String.prototype.codePointAt()