Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열 공백 제거 후 지정된 길이의 청크로 나누는 방법

문제

첫 번째 인수로 공백을 포함할 수 있는 문자열을, 두 번째 인수로 숫자 하나를 받는 JavaScript 함수를 작성해야 합니다.

이 함수는 먼저 문자열에서 모든 공백을 제거한 뒤, 두 번째 인수로 전달된 길이를 기준으로 문자열을 여러 개의 청크(chunk)로 나누어야 합니다.

나눠진 모든 청크는 동일한 길이를 가져야 하며, 유일한 예외는 마지막 청크입니다. 남은 문자가 기준 길이보다 적을 경우 마지막 청크는 더 짧은 길이를 가질 수 있습니다.

코드 예시

다음은 이 문제를 해결하는 코드입니다.

const num = 5;
const str = 'This is an example string';
const splitString = (str = '', num = 1) => {
    str = str.replace(/\s/g,'');
    const arr = [];
    for(let i = 0; i < str.length; i += num){
        arr.push(str.slice(i,i + num));
    };
    return arr;
};
console.log(splitString(str, num));

출력 결과

[ 'Thisi', 'sanex', 'ample', 'strin', 'g' ]

코드 설명

위 코드의 동작 과정은 다음과 같습니다.

1. 공백 제거: str.replace(/\s/g, '')는 정규 표현식 /\s/g를 사용하여 문자열 내의 모든 종류의 공백 문자(스페이스, 탭, 줄바꿈 등)를 빈 문자열로 대체합니다.

2. 청크 분할: for 반복문이 인덱스 inum씩 증가시키면서 진행되고, 각 단계마다 str.slice(i, i + num)으로 현재 위치부터 num 길이만큼의 부분 문자열을 잘라내어 배열에 추가합니다.

3. 마지막 청크 처리: 문자열의 총 길이가 num으로 나누어떨어지지 않으면, 마지막 반복에서 자동으로 남은 문자들만 잘려서 더 짧은 마지막 청크가 만들어집니다. 별도의 예외 처리가 필요하지 않다는 점이 이 방식의 장점입니다.

결과적으로 위 예제에서는 공백이 제거된 문자열 "Thisisanexamplestring"이 5글자씩 잘려 ['Thisi', 'sanex', 'ample', 'strin', 'g']라는 배열이 반환됩니다.