@modern-kit/utils
Version:
1 lines • 3.29 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../src/string/extractLetters/index.ts"],"sourcesContent":["import { objectKeys } from '../../object/objectKeys';\n\ninterface ExtractLettersOptions {\n letters?: boolean;\n numbers?: boolean;\n specialCharacters?: boolean;\n whiteSpace?: boolean;\n}\n\nconst CHAR_PATTERNS = {\n letters: '\\\\p{L}', // 모든 문자\n numbers: '\\\\p{N}', // 모든 숫자\n specialCharacters: '\\\\p{S}\\\\p{P}', // 모든 특수 문자\n whiteSpace: '\\\\s', // 모든 공백 문자\n} as const;\n\n/**\n * @description 문자열에서 특정 문자를 필터링하는 정규 표현식을 생성합니다.\n */\nconst getRegexByOptions = (options: ExtractLettersOptions): RegExp => {\n const keys = objectKeys(options);\n let pattern = '';\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n if (options[key]) {\n pattern += CHAR_PATTERNS[key];\n }\n }\n\n return new RegExp(`[^${pattern}]`, 'gu');\n};\n\n/**\n * @description 주어진 문자열에서 특정 옵션에 따라 문자를 추출하는 함수입니다.\n *\n * @param {string} value - 처리할 입력 문자열입니다.\n * @param {ExtractLettersOptions} [options] - 추출할 문자의 유형을 지정하는 옵션 객체입니다. 기본적으로 문자만 추출합니다.\n * - `letters` (boolean): 문자열에서 문자를 추출할지 여부를 지정합니다.\n * - `numbers` (boolean): 문자열에서 숫자를 추출할지 여부를 지정합니다.\n * - `specialCharacters` (boolean): 문자열에서 특수 문자를 추출할지 여부를 지정합니다.\n * - `whiteSpace` (boolean): 문자열에서 공백을 추출할지 여부를 지정합니다.\n *\n * @returns {string} - 주어진 옵션에 따라 필터링된 문자를 포함하는 문자열을 반환합니다.\n *\n * @example\n * // 문자를 추출\n * extractLetters('abc123!@#', { letters: true }); // 'abc'\n *\n * @example\n * // 숫자를 추출\n * extractLetters('abc123!@#', { numbers: true }); // '123'\n *\n * @example\n * // 문자와 숫자를 추출\n * extractLetters('abc123!@#', { letters: true, numbers: true }); // 'abc123'\n *\n * @example\n * // 공백과 숫자를 추출\n * extractLetters('abc 123 !@#', { whiteSpace: true, numbers: true }); // ' 123 '\n */\nexport function extractLetters(\n value: string,\n options: ExtractLettersOptions = { letters: true }\n): string {\n const regex = getRegexByOptions(options);\n return value.replace(regex, '');\n}\n"],"names":["objectKeys"],"mappings":";;;;AASA,MAAM,aAAA,GAAgB;AAAA,EACpB,OAAA,EAAS,QAAA;AAAA;AAAA,EACT,OAAA,EAAS,QAAA;AAAA;AAAA,EACT,iBAAA,EAAmB,cAAA;AAAA;AAAA,EACnB,UAAA,EAAY;AAAA;AACd,CAAA;AAKA,MAAM,iBAAA,GAAoB,CAAC,OAAA,KAA2C;AACpE,EAAA,MAAM,IAAA,GAAOA,4BAAW,OAAO,CAAA;AAC/B,EAAA,IAAI,OAAA,GAAU,EAAA;AAEd,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAElB,IAAA,IAAI,OAAA,CAAQ,GAAG,CAAA,EAAG;AAChB,MAAA,OAAA,IAAW,cAAc,GAAG,CAAA;AAAA,IAC9B;AAAA,EACF;AAEA,EAAA,OAAO,IAAI,MAAA,CAAO,CAAA,EAAA,EAAK,OAAO,KAAK,IAAI,CAAA;AACzC,CAAA;AA8BO,SAAS,eACd,KAAA,EACA,OAAA,GAAiC,EAAE,OAAA,EAAS,MAAK,EACzC;AACR,EAAA,MAAM,KAAA,GAAQ,kBAAkB,OAAO,CAAA;AACvC,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAChC;;;;"}