UNPKG

es-toolkit

Version:

A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.

64 lines (63 loc) 1.39 kB
//#region src/string/deburr.ts const deburrMap = new Map([ ["Æ", "Ae"], ["Ð", "D"], ["Ø", "O"], ["Þ", "Th"], ["ß", "ss"], ["æ", "ae"], ["ð", "d"], ["ø", "o"], ["þ", "th"], ["Đ", "D"], ["đ", "d"], ["Ħ", "H"], ["ħ", "h"], ["ı", "i"], ["IJ", "IJ"], ["ij", "ij"], ["ĸ", "k"], ["Ŀ", "L"], ["ŀ", "l"], ["Ł", "L"], ["ł", "l"], ["ʼn", "'n"], ["Ŋ", "N"], ["ŋ", "n"], ["Œ", "Oe"], ["œ", "oe"], ["Ŧ", "T"], ["ŧ", "t"], ["ſ", "s"] ]); /** * Converts a string by replacing special characters and diacritical marks with their ASCII equivalents. * For example, "Crème brûlée" becomes "Creme brulee". * * @param str - The input string to be deburred. * @returns The deburred string with special characters replaced by their ASCII equivalents. * * @example * // Basic usage: * deburr('Æthelred') // returns 'Aethelred' * * @example * // Handling diacritical marks: * deburr('München') // returns 'Munchen' * * @example * // Special characters: * deburr('Crème brûlée') // returns 'Creme brulee' */ function deburr(str) { str = str.normalize("NFD"); let result = ""; for (let i = 0; i < str.length; i++) { const char = str[i]; if (char >= "̀" && char <= "ͯ" || char >= "⃐" && char <= "⃿" || char >= "︠" && char <= "︯") continue; result += deburrMap.get(char) ?? char; } return result; } //#endregion exports.deburr = deburr;