ES2015 문자열 조작하기
ES2015에서 문자열 조작을 위한 편리한 기능이 많이 추가되었습니다. 백틱을 이용한 템플릿 리터럴과 문자열 보간은 문자열을 쉽게 다룰 수 있도록 해주는 아주 편리한 기능입니다. 그리고 String 객체에도 문자열을 쉽게 탐색할 수 있는 메서드가 추가되었습니다.
템플릿 리터럴
ES6에서는 문자열을 표기하기 위해 기존에 사용되던 작은 따옴표 및 큰 따옴표('', ""
) 외에 백틱 기호 (``)를 이용할 수 있으며, 백틱 기호로 둘러싼 문자열은 템플릿 리터럴 표기법을 사용할 수 있게 되었습니다.
기존에는 문자열 내에서 개행을 위해 개행할 문장의 끝에 일일이 (\n
) 을 사용해야 했지만 템플릿 리터럴을 사용하면 문자열 개행을 손쉽게 처리할 수 있게 됩니다.
const str = `Oh dear! Oh dear!
I shall be too late!`
console.log(str);
/* 결과
Oh dear! Oh dear!
I shall be too late!
*/
이는 자바스크립트 내에서 HTML을 동적으로 생성할 때 그 효용이 잘 드러납니다. JS 코드 내에서 HTML 구문을 작성할 때 문서의 구조를 그대로 표현할 수 있어서 직관적으로 코드를 이해하는 데 도움이 됩니다.
let stream = `
<div class="row">
<div class="col-xs-2 logo"><img src="logo.png"></div>
<div class="col-xs-7 desc"><p>Online</p></div>
</div>
`;
위의 코드를 기존의 문자열 리터럴로 표현하려면 어떻게 해야 할까요? 생각하기도 싫네요.
문자열 보간 (String Interpolation)
템플릿 리터럴을 이용하면 ${}
템플릿을 이용해 문자열 사이에 손쉽게 표현식의 값을 대입할 수 있으며, 여러줄의 문자열을 쉽게 표현할 수 있습니다. 이를 문자열 보간이라고 표현합니다.
플레이스 홀더 기호 내부에는 자바스크립트 표현식이 올 수 있으며, 문자열 내부에 손쉽게 변수 값이나 표현식 값을 삽입할 수 있습니다.
var alice = { name: 'Alice', place: 'Wonderland' };
var place = alice.place || "Nowhere";
var message = `${alice.name} in ${place}`
console.log(message); //-> Alice in Wonderland
// 예시
let stream = `
<div class="row ${online ? "online" : ""}">
<div class="col-xs-2 logo"><img src=${logo}></div>
<div class="col-xs-3 title"><a href=${url} target="_blank">${name}</a></div>
<div class="col-xs-7 desc"><p>${online ? status : "Offline"}</p></div>
</div>
`;
String 객체
String 객체에 유용한 메서드가 추가되었습니다.
특정 문자열 존재여부 확인하기
var str = "As I was going to Saint Ives";
// str이 인수의 값으로 시작하는지 확인
str.startsWith("As") // true
str.startsWith("going", 9) // true, index 9에서 시작
// str이 인수의 값으로 끝나는지 확인
str.endsWith("Ives") // true
str.endsWith("going", 14) // true, index 14를 끝으로 간주
// str이 인수의 값을 포함하는지 확인
str.includes("going") // true