stringUtils.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. export default class StringUtils {
  2. /**
  3. * Normalise une chaine de caractères en retirant la casse et les caractères spéciaux, à des fins de recherche
  4. * par exemple
  5. * @param s
  6. */
  7. public static normalize(s: string): string {
  8. return s
  9. .toLowerCase()
  10. .replace(/[éèẽëê]/g, 'e')
  11. .replace(/[ç]/g, 'c')
  12. .replace(/[îïĩ]/g, 'i')
  13. .replace(/[àã]/g, 'a')
  14. .replace(/[öôõ]/g, 'o')
  15. .replace(/[ûüũ]/g, 'u')
  16. .replace(/[-]/g, ' ')
  17. .trim()
  18. }
  19. /**
  20. * Convertit le paramètre d'entrée en entier
  21. * A la différence de parseInt, cette méthode accepte aussi les nombres.
  22. * @param s
  23. */
  24. public static parseInt(s: string | number) {
  25. return typeof s === 'number' ? s : parseInt(s)
  26. }
  27. /**
  28. * Hash une chaine de caractères avec l'algorithme demandé
  29. *
  30. * @param input
  31. * @param algorithm
  32. */
  33. public static async hash(input: string, algorithm: string = 'SHA-256') {
  34. const textAsBuffer = new TextEncoder().encode(input)
  35. const hashBuffer = await window.crypto.subtle.digest(
  36. algorithm,
  37. textAsBuffer,
  38. )
  39. const hashArray = Array.from(new Uint8Array(hashBuffer))
  40. return hashArray.map((item) => item.toString(16).padStart(2, '0')).join('')
  41. }
  42. }