| 12345678910111213141516171819 |
- /**
- * Normalizes a string to replace non-alphanumeric and diacritical marks with
- * plain equivalents.
- * Based on https://stackoverflow.com/a/37511463/772859
- */
- export function normalizeString(input: string, spaceReplacer = ' '): string {
- const multipleSequentialReplacerRegex = new RegExp(`([${spaceReplacer}]){2,}`, 'g');
- return (input || '')
- .normalize('NFD')
- .replace(/[\u00df]/g, 'ss')
- .replace(/[\u1e9e]/g, 'SS')
- .replace(/[\u0308]/g, 'e')
- .replace(/[\u0300-\u036f]/g, '')
- .toLowerCase()
- .replace(/[!"£$%^&*()+[\]{};:@#~?\\/,|><`¬'=‘’©®™]/g, '')
- .replace(/\s+/g, spaceReplacer)
- .replace(multipleSequentialReplacerRegex, spaceReplacer);
- }
|