Baseline Widely available
СводкаÐеÑод charCodeAt()
возвÑаÑÐ°ÐµÑ ÑиÑловое знаÑение Юникода Ð´Ð»Ñ Ñимвола по ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ (за иÑклÑÑением кодовÑÑ
ÑоÑек Юникода, болÑÑиÑ
0x10000).
index
Целое ÑиÑло болÑÑе, либо Ñавное 0 и менÑÑе Ð´Ð»Ð¸Ð½Ñ ÑÑÑоки; еÑли паÑамеÑÑ Ð½Ðµ ÑвлÑеÑÑÑ ÑиÑлом, он ÑÑÑанавливаеÑÑÑ Ð² 0.
ÐодовÑе ÑоÑки Юникода пÑоÑÑиÑаÑÑÑÑ Ð² диапазоне Ð¾Ñ 0 до 1114111 (0x10FFFF). ÐеÑвÑе 128 кодовÑÑ ÑоÑек Юникода напÑÑмÑÑ Ð¾ÑобÑажаÑÑÑÑ Ð² кодиÑÐ¾Ð²ÐºÑ ASCII. ÐнÑоÑмаÑÐ¸Ñ Ð¿Ð¾ Ð®Ð½Ð¸ÐºÐ¾Ð´Ñ ÑмоÑÑиÑе в Ð ÑководÑÑве по JavaScript.
ÐбÑаÑиÑе внимание, ÑÑо меÑод charCodeAt()
вÑегда возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение, менÑÑее 65536. Так пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾ÑомÑ, ÑÑо болÑÑие кодовÑе ÑоÑки пÑедÑÑавлÑÑÑÑÑ Ð¿Ð°Ñой (менÑÑиÑ
знаÑений) «ÑÑÑÑогаÑнÑÑ
» пÑевдо-Ñимволов, коÑоÑÑе иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð°ÑÑоÑÑего Ñимвола. ÐоÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¿Ð¾Ð»Ð½Ñй Ñимвол Ð´Ð»Ñ Ð·Ð½Ð°Ñений Ñимволов Ð¾Ñ 65536 и вÑÑе, необÑ
одимо полÑÑиÑÑ Ð½Ðµ ÑолÑко знаÑение charCodeAt(i)
, но Ñакже знаÑение charCodeAt(i + 1)
(как еÑли Ð±Ñ ÑÑÑока ÑоÑÑоÑла из двÑÑ
бÑкв). СмоÑÑиÑе вÑоÑой и ÑÑеÑий пÑимеÑÑ Ð½Ð¸Ð¶Ðµ.
ÐеÑод charCodeAt()
возвÑаÑÐ°ÐµÑ NaN
, еÑли ÑказаннÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¼ÐµÐ½ÑÑе нÑÐ»Ñ Ð¸Ð»Ð¸ болÑÑе Ð´Ð»Ð¸Ð½Ñ ÑÑÑоки.
ÐбÑаÑÐ½Ð°Ñ ÑовмеÑÑимоÑÑÑ: в более ÑÑаÑÑÑ
веÑÑиÑÑ
(напÑимеÑ, в JavaScript 1.2) меÑод charCodeAt()
возвÑаÑал ÑиÑло из кодиÑовки ISO-Latin-1 по ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ. Ðиапазон Ñимволов в кодиÑовке ISO-Latin-1 пÑоÑÑиÑаеÑÑÑ Ð¾Ñ 0 до 255. ÐеÑвÑе 127 ÑиÑел напÑÑмÑÑ Ð¾ÑобÑажаÑÑÑÑ Ð² кодиÑÐ¾Ð²ÐºÑ ASCII.
charCodeAt()
Ð ÑледÑÑÑем пÑимеÑе возвÑаÑаеÑÑÑ ÑиÑло 65, знаÑение Unicode Ð´Ð»Ñ Ð»Ð°ÑинÑкого Ñимвола «A».
"ABC".charCodeAt(0); // веÑнÑÑ 65
ÐÑимеÑ: иÑпÑавление меÑода charCodeAt()
Ð´Ð»Ñ Ð¾Ð±ÑабоÑки Ñимволов не в Ðазовой многоÑзÑковой плоÑкоÑÑи, еÑли иÑ
пÑедÑдÑÑее пÑиÑÑÑÑÑвие в ÑÑÑоке неизвеÑÑно
ÐÑа веÑÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² ÑÐ¸ÐºÐ»Ð°Ñ for, даже когда неизвеÑÑно, бÑли ли до Ñказанной позиÑии ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸Ð· не-ÐÐÐ.
function fixedCharCodeAt(str, idx) {
// напÑимеÑ, fixedCharCodeAt('\uD800\uDC00', 0); // 65536
// напÑимеÑ, fixedCharCodeAt('\uD800\uDC00', 1); // false
idx = idx || 0;
var code = str.charCodeAt(idx);
var hi, low;
// СÑаÑÑÐ°Ñ ÑаÑÑÑ ÑÑÑÑогаÑной паÑÑ (поÑледнее ÑиÑло можно измениÑÑ Ð½Ð° 0xDB7F,
// ÑÑÐ¾Ð±Ñ ÑÑакÑоваÑÑ ÑÑаÑÑÑÑ ÑаÑÑÑ ÑÑÑÑогаÑной паÑÑ Ð² ÑаÑÑной плоÑкоÑÑи как
// одиноÑнÑй Ñимвол)
if (0xd800 <= code && code <= 0xdbff) {
hi = code;
low = str.charCodeAt(idx + 1);
if (isNaN(low)) {
throw "СÑаÑÑÐ°Ñ ÑаÑÑÑ ÑÑÑÑогаÑной паÑÑ Ð±ÐµÐ· ÑледÑÑÑей младÑей в fixedCharCodeAt()";
}
return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;
}
if (0xdc00 <= code && code <= 0xdfff) {
// ÐладÑÐ°Ñ ÑаÑÑÑ ÑÑÑÑогаÑной паÑÑ
// ÐÑ Ð²Ð¾Ð·Ð²ÑаÑаем false, ÑÑÐ¾Ð±Ñ Ñикл пÑопÑÑÑил ÑÑÑ Ð¸ÑеÑаÑиÑ,
// поÑколÑÐºÑ ÑÑÑÑогаÑÐ½Ð°Ñ Ð¿Ð°Ñа
// Ñже обÑабоÑана в пÑедÑдÑÑей иÑеÑаÑии
return false;
// hi = str.charCodeAt(idx - 1);
// low = code;
// return ((hi - 0xD800) * 0x400) +
// (low - 0xDC00) + 0x10000;
}
return code;
}
ÐÑимеÑ: иÑпÑавление меÑода charCodeAt()
Ð´Ð»Ñ Ð¾Ð±ÑабоÑки Ñимволов не в Ðазовой многоÑзÑковой плоÑкоÑÑи, еÑли иÑ
пÑедÑдÑÑее пÑиÑÑÑÑÑвие в ÑÑÑоке извеÑÑно
function knownCharCodeAt(str, idx) {
str += "";
var code,
end = str.length;
var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
while (surrogatePairs.exec(str) != null) {
var li = surrogatePairs.lastIndex;
if (li - 2 < idx) {
idx++;
} else {
break;
}
}
if (idx >= end || idx < 0) {
return NaN;
}
code = str.charCodeAt(idx);
var hi, low;
if (0xd800 <= code && code <= 0xdbff) {
hi = code;
low = str.charCodeAt(idx + 1);
// ÐеÑеÑагиваем ÑеÑез один, поÑколÑÐºÑ Ð¾Ð´Ð¸Ð½ «Ñимвол» ÑвлÑеÑÑÑ ÑаÑÑÑÑ ÑÑÑÑогаÑной паÑÑ
return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;
}
return code;
}
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4