알고리즘 문제 풀이 중 소문자나 대문자 구분, 숫자 구분등의 기능을 구현해야 할 때가 있는데요.
상황에 따라 어떤 방식을 사용하는 것이 좋을지 알아보기 위해 개념 정리를 해보았습니다.
1. charCodeAt
특징
- 문자열에만 적용 가능(문자를 10진수 숫자로 치환)
- 문자열의 index number를 인자로 사용 가능(해당 문자열의 index range를 넘어가면 NaN을 return)
// charCodeAt example
"galaxy".charCodeAt(0); // 103
"galaxy".charCodeAt(1); // 97
"galaxy".charCodeAt(6); // NaN
32.charCodeAt(); // syntaxError: Invalid or unexpected token
2. fromCharCode
특징
- 아스키 코드 번호를 문자로 치환(숫자를 문자로 치환)
- 여러 숫자를 사용해 문자 생성 가능
- 가능한 값의 범위는 0부터 65535(0xFFFF)까지로, 0xFFFF를 초과하는 값은 잘립니다(유효성 검사X)
// fromCharCode example
String.fromCharCode(33); // "!"
String.fromCharCode(0x6B); // "k"
String.fromCharCode(0x20); // " "
String.fromCharCode(66,35, 78) // "B#N"
String.fromCharCode(65535); // ""
String.fromCharCode(65536 + 33); // "!". 65535를 초과하면 0부터 다시 시작
String.fromCharCode(0); // ""
언제 사용하는 걸까
input이 영문자(소문자, 대문자)거나 영문자로 이뤄진 배열일 때 사용하기 좋습니다.
하지만 문제가 하나 있는데, 아스키 코드의 범위를 알지 못한다면 사용할 수 없다는 점입니다.
예를 들자면 대문자를 나타내는 범위는 65-90, 소문자는 97-122인데요.
실수로 범위를 잊는다면 코딩 도중 불필요한 시간 낭비를 할 수 있습니다.
그럴 때 사용하기 좋은 것이 정규표현식이겠죠.
정규표현식은 문자 외에도 숫자나 특수문자까지 구분할 수 있으니까요.
하지만 정규표현식도 학습이 필요하고, 헷갈릴 때가 있기 때문에 코딩테스트를 보는 것이 아니라면
편하게 구글링을 해서 사용하도록 합시다.
'JS & REACT' 카테고리의 다른 글
나는 useEffect를 잘못 사용하고 있었다 (0) | 2024.06.20 |
---|---|
서로 다른 컴포넌트에서 호출한 커스텀 훅이 지니는 개별성 (0) | 2024.06.08 |
알고리즘 풀이 중 오랜만에 경험한 기초 지식 (0) | 2024.05.12 |
숫자와 문자가 섞인 문자열에서, 각 요소를 구분하는 방법 (0) | 2024.05.11 |
중첩 삼항 연산자로 곤란하다면, 객체 리터럴을 추천한다. (0) | 2024.03.29 |