오늘은 Solo Week 마지막 날. 내일부터 이머시브 코스가 시작된다. (두근두근)
3일 간의 솔로위크(?)동안 이머시브 코스를 대비해서! 그동안 많이 못 움직인 만큼 실컷 뛰어다니고 일찍 잠도 자고 밥도 천천히 먹고 힐링의 시간을 가졌더니 여유를 되찾은 것 같다.
오늘 알고리즘 문제를 풀던 중 새롭게 알게 된 내용들을 정리해보자
|replace와 정규식을 이용해 replaceAll처럼 사용하기비트 OR 연산자는 양쪽 피연산자의 이진 표현을 OR 연산한 후, 그 결과를 다시 십진 표현으로 바꾸어 반환해준다. 설명보다 예시를 보는게 이해가 빨리된다.
const decimal1 = 9
const decimal2 = 14
console.log(decimal1 | decimal2); // --> 15
작동 과정은 아래와 같다.
9 (base 10) = 00000000000000000000000000001001 (base 2)
14 (base 10) = 00000000000000000000000000001110 (base 2)
--------------------------------
14 | 9 (base 10) = 00000000000000000000000000001111 (base 2) = 15 (base 10)
지난번에 비트 XOR 연산자를 공부해둔 덕에 알고리즘을 풀다가 쉽게 비트연산자를 떠올릴 수 있었다. 비트 연산자가 유용하기도 하고 쓰임이 생각보다 많은 것 같다. 잘 기억해 두자.
replace와 정규식을 이용해 replaceAll처럼 사용하기String.replace(
searchValue,newValue)
replace 메서드는 원본 문자열에서 가장 먼저 등장하는 searchValue를 찾아서 newValue로 치환한 새로운 문자열을 반환해준다.
// 예시
const message = 'dear. my dear'
const replaced = message.replace('dear', 'To')
console.log(replaced); // --> 'To. my dear'
예시를 보면 알 수 있듯, replace 메서드는 searchValue와 일치하는 첫번째 문자만 newValue로 치환해준다.
자바스크립트에서 특정 문자를 모두 다른 문자로 치환하고 싶을 땐 자바스크립트 문자열 객체의 replaceAll 메서드를 사용하면 된다.
String.replaceAll(
searchValue,newValue)
replaceAll 메서드는 원본 문자열에서 searchValue를 모두 찾아서 newValue로 치환한 새로운 문자열을 반환해준다.
// 예시
const message = 'dear. my dear'
const replacedAll = message.replaceAll('dear', 'To')
console.log(replacedAll); // --> 'To. my To'

프로그래머스에서 replaceAll이 작동하지 않아 검색해보니, 자바스크립트 replaceAll 메서드는 일부 브라우저에서는 지원하지않는다. 모든 브라우저를 지원해야되는 상황이라면 replace와 정규표현식을 사용해 구현하는 것이 좋다.
replace와 정규식을 이용해 replaceAll처럼 사용하기replace와 정규표현식을 다음과 같이 사용하면 replaceAll처럼 활용할 수 있다.
const message = 'dear. my dear'
const replacedReg = message.replace(/dear/g, 'To')
console.log(replacedReg); // --> 'To. my To'
g 플래그는 '전역 검색(모든 값에 대한 검색)'을 의미한다. 정규표현식뒤에 g를 작성해주면 모든 값을 검사하기 때문에 replaceAll와 같은 결과를 얻을 수 있다.replace, replaceAll - 정규식으로 한꺼번에 바꾸기만약 바꾸고 싶은 문자열이 대소문자가 섞여 있으면 어떻게 될까?
const message = 'Dear. my dear'
const replacedReg = message.replace(/dear/g, 'To')
console.log(replacedReg); // --> 'Dear. my To'
replace와 replaceAll은 대소문자를 구분하기 때문에 대문자 D로 시작하는 Dear은 바뀌지 않은 것을 볼 수 있다. 이런 경우에도 정규식을 이용하면 간단하게 대소문자를 구분하지 않고 치환하는 것이 가능하다.
const message = 'Dear. my dear'
const replacedReg = message.replace(/dear/gi, 'To')
console.log(replacedReg); // --> 'To. my To'
i 플래그는 '대소문자 구분 없는 검색'을 의미한다.정규표현식의 플래그 사용에 대한 내용은 여기에서 찾아볼 수 있다.