blob: 120a64d453e7bb7d34ba1365f3103e01624c5124 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
export default function ucs2length(str) {
const len = str.length;
let length = 0;
let pos = 0;
let value;
while (pos < len) {
length++;
value = str.charCodeAt(pos++);
if (value >= 0xd800 && value <= 0xdbff && pos < len) {
// high surrogate, and there is a next character
value = str.charCodeAt(pos);
if ((value & 0xfc00) === 0xdc00) pos++; // low surrogate
}
}
return length;
}
|