RotLenin

Trim

Dec 17th, 2021
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. console.log(trim('  abc  ')); // => 'abc'
  2. console.log(trim('-_-abc-_-', '_-')); // => 'abc'
  3. console.log(trim('\xA0foo')); // "foo"
  4. console.log(trim('\xA0foo', ' ')); // " foo"
  5. console.log(trim('-_-ab c -_-', '_-')); // ab c
  6.  
  7. console.log(['  foo  ', '  bar  ']
  8.   .map((value) => trim(value))); // => ['foo', 'bar']
  9.  
  10.  
  11. /** _removeUTF8BOM
  12.  * Убирает символ начала utf8-bom
  13.  * @param {string} string
  14.  * @return {string}
  15.  */
  16. function _removeUTF8BOM(string : string) : string {
  17.   if (string.charCodeAt(0) === 0xFEFF) {
  18.     string = string.substr(1);
  19.   }
  20.   return string;
  21. }
  22.  
  23. /** _cleanUTF8
  24.  * Убирает битыее utf8 символы
  25.  * @param {string} string
  26.  * @return {string}
  27.  */
  28. function _cleanUTF8(string : string) : string {
  29.   let output = '';
  30.   for (let i=0; i < string.length; i++) {
  31.     if (string.charCodeAt(i) <= 127) {
  32.       output += string.charAt(i);
  33.     }
  34.   }
  35.   return output;
  36. }
  37.  
  38. /** _removeNeedle
  39.  * Убирает подстроки из строки
  40.  * @param {string} string
  41.  * @param {string} needle
  42.  * @return {string}
  43.  */
  44. function _removeNeedle(string : string, needle = '') : string {
  45.   const re = new RegExp('['+needle+']', 'g');
  46.   return string.replaceAll(re, '');
  47. }
  48.  
  49. /** _trim
  50.  *  Убираем отступы по краям строки, так же убираем символы needle
  51.  * @param {string} string
  52.  * @param {string} needle
  53.  * @return {string}
  54.  */
  55. function _trim(string : string, needle = '') : string {
  56.   string = _removeUTF8BOM(string)
  57.   string = _cleanUTF8(string)
  58.   string = _removeNeedle(string, needle)
  59.   return string.trim();
  60. }
  61.  
  62. /** trim
  63.  * Перегрузка функции _trim для строки
  64.  * @param {string | string[]} string
  65.  * @param {string} needle
  66.  * @return{string | string[]}
  67.  */
  68. function trim(string : string | string[], needle? : string) : string | string[]{
  69.   if(Array.isArray(string)){
  70.     return string.map((el : string) => _trim(el, needle));
  71.   }
  72.   return _trim(string, needle);
  73. }
  74.  
  75. export default trim;
  76.  
Advertisement
Add Comment
Please, Sign In to add comment