2020-08-13
자바스크립트 알고리즘 문자열.
서적
: ‘자바스크립트로 하는 자료 구조와 알고리즘’을 읽고 이해한 내용 정리
자바스크립트로 문자열과 String 객체 그리고 내장 함수들을 알아본다.
자바스크립트의 기본 자료형인 String에서 사용할 수 있는 문자열 함수를 알아보자.
문자에 접근하는 방법은 .charAt()
을 이용한다.
'cat'.charAt(1); // "a"를 반환한다.
.charAt(index)
는 0부터 시작하여 해당 위치의 인덱스 값을 한다.
또한 지정한 인덱스 사이의 문자들을 반환하는 .subString(startIndex, endIndex)
를 사용할 수 있다.
'superCat'.substring(1, 2); // "u"를 반환한다.
'superCat'.substring(5, 8); // "Cat"를 반환한다.
'superCat'.substring(1); // "uperCat" 두 번째 매개변수(endIndex)를 전달하지 않으면 시작 위치부터 끝까지 값을 반환한다.
문자열도 서로 비교가 가능하다.
const firstWord = 'a';
const secondWord = 'b';
console.log(firstWord < secondWord); // 'true'를 반환한다.
하지만 서로 다른 길이의 두 문자열을 비교한다면 더 짧은 길이의 문자열 길이만큼만 비교한다.
const firstWord = 'able';
const secondWord = 'b';
console.log(firstWord < secondWord); // 'true'를 반환한다.
여기서 ‘able’의 ‘a’와 ‘b’가 서로 비교되어 secondword가 더 큰 것이 된다.
문자열 내에서 특정 문자열을 찾기 위해 indexOf(searchValue[, fromIndex])
를 사용할 수 있다.
searchValue
의 값과 같은 문자열이 시작하는 인덱스(0부터 시작)를 반환하는데 일치하는 값이 없으면 -1을 반환한다.
'apple iPhone'.indexOf('apple'); // 0을 반환한다.
'apple iPhone'.indexOf('Galaxy'); // -1을 반환한다.
'apple iPhone'.indexOf('iPhone', 6); // 6을 반환한다.
'apple iPhone'.indexOf('iPhone', 8); // -1을 반환한다.
문자열을 나누기 위해서는 split(separator[, limit])
를 사용할 수 있다.
반환 값은 Array가 되며 separator
를 기준으로 분리하여 배열로 만들어 준다(separator
값은 사라진다).
[, limit]
는 시작을 기준으로 몇 개의 Array값을 만들지 결정한다(1부터 시작).
const tasteWord = 'chocolate-Cookie';
tasteWord.split('-'); // ['chocolate', 'Cookie']
tasteWord.split('-', 2); // ['chocolate', 'Cookie']
tasteWord.split('-', 1); // ['chocolate']
.replace(string, replaceString)
은 문자열 변수 내 특정 문자열을 다른 문자열로 대체할 수 있다.
const changeWord = 'I hate chocolate';
changeWord.replace('hate', 'love'); // 'I love chocolate'을 출력한다.
정규 표현식은 검색 패턴을 정의한 문자열들의 집합이다.
자바스크립트에서는 정규 표현식에 사용할 수 있는 객체 RegExp
를 제공한다.
RegExp
에는 다음과 같은 함수가 있다.
search()
: 문자열 내에 일치하는 문자열을 찾는다. 일치하는 문자열의 인덱스를 반환한다.match()
: 첫 번쨰로 일치하는 문자열을 찾는다. 첫 번째로 일치하는 문자열(Array)을 반환한다.matchAll()
: 일치하는 문자열을 찾는다. 일치하는 문자열(Array)을 반환한다.const word = 'I am very very sleepy';
const searchResult = word.search(/sleep/);
console.log(searchResult); // '15'를 출력한다.
const matchResult = word.match(/very/);
console.log(matchResult);
// ["very", index: 5, input: "I am very very sleepy", groups: undefined]
const matchAllResult = word.matchAll(/very/g);
console.log(...matchAllResult);
// ["very", index: 5, input: "I am very very sleepy", groups: undefined]
// ["very", index: 10, input: "I am very very sleepy", groups: undefined]
기본 정규 표현식의 규칙은 다음과 같다.
// 인코딩, 암호화 추가 예정
👋