Let's try mozilla's fixedCharAt function

master
Chloe Fontenot 🏳️‍⚧️ 2023-04-30 18:51:08 +07:00
parent 69c62365ba
commit ec78f86ff7
1 changed files with 5 additions and 1 deletions

@ -210,6 +210,7 @@ function design4(input) {
} }
return outputString; return outputString;
} }
const surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
var charIterateState; var charIterateState;
function charIterate(input) { function charIterate(input) {
if (charIterateState == undefined) { if (charIterateState == undefined) {
@ -218,6 +219,9 @@ function charIterate(input) {
} else { } else {
if (charIterateState < (input.length - 1)) { if (charIterateState < (input.length - 1)) {
charIterateState++; charIterateState++;
if (surrogatePairs.exec(input.charCodeAt(charIterateState)) !== null) {
charIterateState++;
}
} else { } else {
charIterateState = 0; charIterateState = 0;
} }
@ -288,7 +292,7 @@ function design5(input) {
function fixedCharAt(str, idx) { function fixedCharAt(str, idx) {
str = String(str); str = String(str);
const surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; //const surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
while (surrogatePairs.exec(str) !== null) { while (surrogatePairs.exec(str) !== null) {
const lastIdx = surrogatePairs.lastIndex; const lastIdx = surrogatePairs.lastIndex;
if (lastIdx - 2 < idx) { if (lastIdx - 2 < idx) {