@modern-kit/utils
Version:
1 lines • 3.77 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../src/string/trimEnd/index.ts"],"sourcesContent":["import { flatMap } from '../../array/flatMap';\nimport { isNil } from '../../validator/isNil';\n\n/**\n * @description 문자열에서 `후행 공백`을 제거합니다. `String.prototype.trimEnd`와 동일하게 동작합니다.\n *\n * @param {string} str - 전체 문자열입니다.\n * @returns {string} - str에서 `후행 공백`을 제거한 문자열입니다.\n *\n * @example\n * trimEnd('abc '); // 'abc'\n */\nexport function trimEnd(str: string): string;\n\n/**\n * @description 문자열에서 `지정된 문자들의 조합`을 문자열 끝 부분에서 찾아 제거합니다.\n *\n * chars가 문자열인 경우 해당 문자열을 각 문자로 나누고 문자열 끝 부분에서 이를 찾아 제거합니다.\n * - ex: `\"+-*\" -> ['+', '-', '*']`\n *\n * chars가 배열인 경우 배열 내 문자열을 각 문자로 나누고 문자열 끝 부분에서 이를 찾아 제거합니다.\n * - ex: `['+*', '-'] -> ['+', '*', '-']`\n *\n * @param {string} str - 전체 문자열입니다.\n * @param {string | string[]} chars - 문자열 뒷부분에서 제거하고 싶은 문자열 혹은 문자열 배열입니다.\n * @returns {string} - str에서 뒤에있는 공백 또는 지정된 chars를 제거한 문자열입니다.\n *\n *\n * @example\n * trimEnd('abc--', '-'); // 'abc'\n * trimEnd('abc+-*', '+-*'); // 'abc'\n *\n * @example\n * trimEnd('abc-_-', ['-', '_']); // 'abc'\n * trimEnd('abc+-*', ['+*', '-']); // 'abc'\n */\nexport function trimEnd(str: string, chars: string | string[]): string;\n\n/**\n * @description 문자열에서 `후행 공백` 또는 `지정된 문자`를 제거합니다.\n *\n * chars 매개변수가 주어지지 않으면 모든 후행 공백을 제거합니다. (`String.prototype.trimEnd`와 동일하게 동작합니다.)\n *\n * chars가 문자열인 경우 해당 문자열을 각 문자로 나누고 문자열 시작 부분에서 이를 찾아 제거합니다.\n * - ex: `'+-*' -> ['+', '-', '*']`\n *\n * chars가 배열인 경우 배열 내 문자열을 각 문자로 나누고 문자열 시작 부분에서 이를 찾아 제거합니다.\n * - ex: `['+*', '-'] -> ['+', '*', '-']`\n *\n * @param {string} str - 전체 문자열입니다.\n * @param {string | string[]} chars - 문자열 뒷부분에서 제거하고 싶은 문자열 혹은 문자열 배열입니다.\n * @returns {string} - str에서 뒤에있는 공백 또는 지정된 chars를 제거한 문자열입니다.\n *\n * @example\n * trimEnd('abc '); // 'abc', 후행 공백 모두 제거\n *\n * @example\n * trimEnd('abc--', '-'); // 'abc'\n * trimEnd('abc+-*', '+-*'); // 'abc'\n *\n * @example\n * trimEnd('abc-_-', ['-', '_']); // 'abc'\n * trimEnd('abc+-*', ['+*', '-']); // 'abc'\n */\nexport function trimEnd(str: string, chars?: string | string[]): string {\n if (isNil(chars)) {\n return str.trimEnd();\n }\n\n const charsToUse = Array.isArray(chars)\n ? flatMap(chars, (char) => char.split(''))\n : chars;\n\n let endIndex = str.length;\n\n while (endIndex > 0 && charsToUse.includes(str[endIndex - 1])) {\n endIndex--;\n }\n\n return str.substring(0, endIndex);\n}\n"],"names":["isNil","flatMap"],"mappings":";;;;;;AAgEO,SAAS,OAAA,CAAQ,KAAa,KAAA,EAAmC;AACtE,EAAA,IAAIA,oBAAA,CAAM,KAAK,CAAA,EAAG;AAChB,IAAA,OAAO,IAAI,OAAA,EAAQ;AAAA,EACrB;AAEA,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAClCC,oBAAA,CAAQ,KAAA,EAAO,CAAC,IAAA,KAAS,IAAA,CAAK,KAAA,CAAM,EAAE,CAAC,CAAA,GACvC,KAAA;AAEJ,EAAA,IAAI,WAAW,GAAA,CAAI,MAAA;AAEnB,EAAA,OAAO,QAAA,GAAW,KAAK,UAAA,CAAW,QAAA,CAAS,IAAI,QAAA,GAAW,CAAC,CAAC,CAAA,EAAG;AAC7D,IAAA,QAAA,EAAA;AAAA,EACF;AAEA,EAAA,OAAO,GAAA,CAAI,SAAA,CAAU,CAAA,EAAG,QAAQ,CAAA;AAClC;;;;"}