Spaces:
Running
Running
File size: 656 Bytes
c2b7eb3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | /**
* Get UCS-2 length of a string
* https://mathiasbynens.be/notes/javascript-encoding
* https://github.com/bestiejs/punycode.js - punycode.ucs2.decode
*/
export function ucs2length(s: string): number {
let result = 0;
let length = s.length;
let index = 0;
let charCode: number;
while (index < length) {
result++;
charCode = s.charCodeAt(index++);
if (charCode >= 0xd800 && charCode <= 0xdbff && index < length) {
// high surrogate, and there is a next character
charCode = s.charCodeAt(index);
if ((charCode & 0xfc00) == 0xdc00) {
// low surrogate
index++;
}
}
}
return result;
}
|