728x90
JavaScipt에서 문자열을 특정 문자를 구분할 때 split() 함수를 자주 사용합니다.
var str = 'HTML,CSS,JavaScript';
var words = str.split(',');
console.log(words) // 결과 : ['HTML', 'CSS', 'JavaScript']
그러나 구분자가 하나가 아니라면 ▶세 개의 구분자 포스팅에서 나온 문제처럼 코드가 길어집니다.
그러면 구분자를 여러 개를 사용하고 싶을 때는 어떻게 해야 할까요?
문자열을 여러 조건으로 나누고 싶을 때는 크게 2가지가 있습니다.
1. 정규식
let arr = ["Park:M" , "Choi:F" , "Son:M"];
let answer = arr.toString().split(/[,:]/);
console.log(answer); // 결과 : ['Park', 'M', 'Choi', 'F', 'Son', 'M']
위 코드처럼 정규식을 활용한다면 구분자가 여러 개여도 구분할 수 있습니다.
기호 | 의미 |
| | OR |
[] | 괄호안의 문자들 중 하나 |
[^문자] | 괄호안의 문자를 제외한 것 |
^문자열 | 특정 문자열로 시작(괄호 없음 주의!) |
문자열$ | 특정 문자열로 끝남 |
() | 그룹 검색 및 분류(match메서드에서 그룹별로 묶어줌) |
(?: 패턴) | 그룹 검색(분류X) |
\b | 단어의 처음/끝 |
\B | 단어의 처음/끝이 아님 |
2. split() + join()
split()과 join()을 반복적으로 사용하면 됩니다.
문자열. split() : 소괄호 내의 기호로 문자열을 나누어 배열로 만듭니다.
배열. join() : 소괄호 내의 기호로 배열의 각 원소를 이어 붙여 문자열로 만듭니다.
let str = "A!B@C$D";
console.log(str); // 결과 : 'A!B@C$D'
let str1 = str.split('!').join(',');
console.log(str1);// 결과 : 'A,B@C$D'
let str2 = str1.split('@').join(',');
console.log(str2);// 결과 : 'A,B,C$D'
let str3 = str2.split('$').join(',');
console.log(str3);// 결과 : 'A,B,C,D'
다른 활용
function solution(myStr) {
const tmp1 = myStr.split("a").join("b")
const tmp2 = tmp1.split("b").join("c")
const tmp3 = tmp2.split("c").filter(x => x)
if (tmp3.length === 0) return ["EMPTY"]
return tmp3
}
위 코드는 ▶세 개의 구분자 포스팅에서 나온 문제입니다.
구분자를 여러 개를 사용해서 해당 구분자를 제외한 문자를 얻으려면 위와 같이 활용하면 됩니다.
해당 포스팅에서도 설명했듯이 join() 함수의 인자를 연속해서 넣어준다면 a → b → c 순으로 변하고 filter() 함수를 사용하여 빈값이 아닌 값만 저장해 주면 됩니다.
'Language > JavaScript' 카테고리의 다른 글
[JavaScript] Array every(), some() 함수 알아보기 (0) | 2024.02.12 |
---|---|
(JavaScript) 객체(Dictionary) 알아보기 (1) | 2024.02.10 |
[JavaScript] 이스케이프 문자 처리 / 백틱(Backtick) (0) | 2024.01.28 |
[JavaScript] 구조 분해 할당(destructuring assignment) (0) | 2024.01.26 |
[JavaScript] Set 알아보기 (1) | 2024.01.21 |