MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

이 장에서는 JavaScript에서 문자열과 텍스트로 작업하는 방법을 소개합니다.

문자열

 JavaScript의 문자열 유형은 원문의 데이터를 나타내는데 사용됩니다. 이는 16비트 부호 없는 정수 값의 "요소" 집합입니다. 문자열의 각 요소는 문자열에서 위치를 차지합니다. 첫 번째 요소는 인덱스 0에서, 다음은 인덱스 1에서 등등입니다. 문자열의 길이는 요소의 수입니다. 여러분은 문자열 리터럴 또는 문자열 개체를 사용하여 문자열을 만들 수 있습니다.

문자열 리터럴

여러분은 작은따옴표나 큰따옴표를 사용하여 간단한 문자열을 만들 수 있습니다:

'foo'
"bar"

:보다 많은 문자열을 이스케이프 시퀀스를 사용하여 만들 수 있습니다:

16진수 이스케이프 시퀀스

\x 뒤에 수는 16진수로 해석됩니다.

'\xA9' // "©"

유니코드 이스케이프 시퀀스

유니코드 이스케이프 시퀀스는 \u 다음에 적어도 네 개의 문자를 필요로 합니다.

'\u00A9' // "©"

유니코드 코드 포인트 이스케이프

ECMAScript 6의 새로운 기능. 유니코드 코드 포인트 이스케이프를 가지고,  최대 0x10FFFF로 유니코드 코드 포인트를 사용할 수 있도록 모든 문자 16진수를 사용하여 이스케이프할 수있습니다. 간단한 유니코드 이스케이프를 가지고, 동일함을 달성하기 위해 별도로 대용의 반쪽을 쓰도록하는 것이 필요합니다.

String.fromCodePoint()String.prototype.codePointAt()를 참고하세요.

'\u{2F804}'

// the same with simple Unicode escapes
'\uD87E\uDC04'

문자열 개체

문자열 개체는 문자열 기본 데이터 형식의 래퍼입니다.

var s = new String("foo"); // Creates a String object
console.log(s); // Displays: { '0': 'f', '1': 'o', '2': 'o'}
typeof s; // Returns 'object'

여러분은 문자열 리터럴 값에 문자열 개체의 방법 중 하나를 호출 할 수 있습니다.—JavaScript가 자동으로 문자열 리터럴을 임시 문자열 개체로 변환하고, 메서드를 호출하고, 그리고나서 임시 문자열 개체를 삭제합니다. 또한, String.length 속성을 문자열 리터럴과 함께 사용할 수 있습니다.

특별히 문자열 개체를 사용할 필요가 없지 않는 한, 문자열 개체는 직관에 반하는 행동을 할 수 있기 때문에 여러분은 문자열 리터럴을 사용해야합니다. 예를들어:

var s1 = "2 + 2"; // Creates a string literal value
var s2 = new String("2 + 2"); // Creates a String object
eval(s1); // Returns the number 4
eval(s2); // Returns the string "2 + 2"

문자열 개체 문자열의 문자 수를 나타내는 하나의 속성, 길이를 갖습니다. 예를 들어, "Hello, World!"가 13자 이므로 다음 코드는 x를 값 13으로 할당합니다.

var mystring = "Hello, World!";
var x = mystring.length;

문자열 객체는 다양한 메서드가 있습니다: substringtoUpperCase같이, 문자열 자체에 변화를 반환한 것들.

다음 표는 문자열 개체의 메서드를 요약한 것입니다.

문자열 메서드

Method Description
charAtcharCodeAt, codePointAt

문자열에서 지정된 위치에 있는 문자나 문자 코드를 반환합니다.

indexOf, lastIndexOf

문자열에서 지정된 부분 문자열의 위치나 지정된 부분 문자열의 마지막 위치를 각각 반환합니다.

startsWith, endsWith, includes

문자열 시작하고, 끝나고, 지정된 문자열을 포함하는지의 여부를 반환합니다.

concat

두 문자열의 텍스트를 결합하고 새로운 문자열을 반환합니다.

fromCharCode, fromCodePoint

유니코드 값의 지정된 시퀀스로부터 문자열을 구축합니다. 문자열 인스턴스가 아닌 문자열 클래스의 메서드입니다.

split

부분 문자열로 문자열을 분리하여 문자열 배열로 문자열 개체를 분할합니다.

slice

문자열의 한 부분을 추출하고 새 문자열을 반환합니다.

substring, substr

어느 시작 및 종료 인덱스 또는 시작 인덱스 길이를 지정하여, 문자열의 지정된 일부를 반환합니다.

match, replace, search

정규 표현식으로 작업합니다.

toLowerCase, toUpperCase

.모든 소문자 또는 대문자에서 각각 문자열을 반환합니다.

normalize 호출 문자열 값 유니 코드 표준화 양식을 반환합니다.
repeat

주어진 회를 반복하는 개체 요소로 이루어진 문자열을 반환합니다.

trim 문자열의 시작과 끝에서 공백을 자릅니다.

다중 선 템플릿 문자열

템플릿 문자열은 포함 식을 용납하는 문자열 리터럴입니다. 여러분은 그것들과 함께 다중 선 문자열 및 문자열 보간 기능을 사용할 수 있습니다.

템플릿 문자열은 작은따옴표나 큰따옴표 대신에 back-tick (` `) (grave accent)문자로 묶습니다. 템플릿 문자열은 자리 표시자를 포함 할 수 있습니다. 이들은 달러 기호 중괄호로 표시됩니다.  (${expression})

다중 선

소스에 삽입하는 새로운 선 문자는 템플릿 문자열의 일부입니다. 정상적인 문자열을 사용하면, 여러분은 다중 선 문자열을 얻기 위해 다음과 같은 구문을 사용해야합니다:

console.log("string text line 1\n\
string text line 2");
// "string text line 1
// string text line 2"

다중 선 문자열과 같은 효과를 얻기 위해, 여러분은 이제 쓸 수 있습니다:

console.log(`string text line 1
string text line 2`);
// "string text line 1
// string text line 2"

포함식

일반 문자열 내에서 표현식을 포함하기 위해, 다음과 같은 구문을 사용합니다:

var a = 5;
var b = 10;
console.log("Fifteen is " + (a + b) + " and\nnot " + (2 * a + b) + ".");
// "Fifteen is 15 and
// not 20."

이제, 템플릿 문자열을 가지고, 여러분은 읽기와 같이 대체를 만드는 syntactic sugar의 사용을 할 수 있습니다:

var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b} and\nnot ${2 * a + b}.`);
// "Fifteen is 15 and
// not 20."

자세한 내용은 JavaScript 참조에서 템플릿 문자열에 대해 읽어보세요.

국제화

Intl 개체는  ECMA스크립트 국제 API에 언어와 문자열과 숫자서식과 날짜와 시간서식을 제공하는 명칭공간입니다.  Collator, NumberFormat, 와 DateTimeFormat 개체들을 위한 생성자들은  Intl 개체의 특성들입니다.

날짜와 시간서식

DateTimeFormat 개체는 날짜와 시간을 서식하기에 유용합니다. 다음 코드는 미국에서 쓰이는 영어로 날짜를 서식합니다. (결과는 다른 시간대와 다릅니다)

var msPerDay = 24 * 60 * 60 * 1000;
 
// July 17, 2014 00:00:00 UTC.
var july172014 = new Date(msPerDay * (44 * 365 + 11 + 197));

var options = { year: "2-digit", month: "2-digit", day: "2-digit",
                hour: "2-digit", minute: "2-digit", timeZoneName: "short" };
var americanDateTime = new Intl.DateTimeFormat("en-US", options).format;
 
console.log(americanDateTime(july172014)); // 07/16/14, 5:00 PM PDT

숫자 서식

NumberFormat개체는 통화를 위해 숫자를 서식하는것에 대해 유용하다.

var gasPrice = new Intl.NumberFormat("en-US",
                        { style: "currency", currency: "USD",
                          minimumFractionDigits: 3 });
 
console.log(gasPrice.format(5.259)); // $5.259

var hanDecimalRMBInChina = new Intl.NumberFormat("zh-CN-u-nu-hanidec",
                        { style: "currency", currency: "CNY" });
 
console.log(hanDecimalRMBInChina.format(1314.25)); // ¥ 一,三一四.二五

조합

Collator개체는 문자열을 비교하고 구분하는 것에 대해 유용합니다.

예를 들어, 실제로 독일에선 phonebook과 dictionary라는 2개의 다른 종류의 명령어들이 있습니다. 전화기록부류는 소리를 강조합니다. 그리고 구분에 앞서 다른것들은 “ä”, “ö”인것처럼 "ae", "oe"로 확장됐습니다. 

var names = ["Hochberg", "Hönigswald", "Holzman"];
 
var germanPhonebook = new Intl.Collator("de-DE-u-co-phonebk");
 
// as if sorting ["Hochberg", "Hoenigswald", "Holzman"]:
console.log(names.sort(germanPhonebook.compare).join(", "));
// logs "Hochberg, Hönigswald, Holzman"

어떤 독일말들은 여분의 변모음과 함께 활용한다. 그래서 사전안에서 이것은 변모음을 무시하라고 명령하기에 실용적이다.

var germanDictionary = new Intl.Collator("de-DE-u-co-dict");
 
// as if sorting ["Hochberg", "Honigswald", "Holzman"]:
console.log(names.sort(germanDictionary.compare).join(", "));
// logs "Hochberg, Holzman, Hönigswald"

IntlAPI에 대한 자세한 내용은 자바스크립트 국제화 API소개를 참조하세요.

정규 표현식

Regular expressions은  패턴 문자열에서 문자 조합을 일치시키는 데 사용합니다.

이 표현들은 복잡하고 강력하고 다음 장에서 설명 할것입니다. 여기서 규칙적인표현에 대해 더 살펴보아라:

문서 태그 및 공헌자

 이 페이지의 공헌자: jungpaeng, kr-leeteahoon, wertgw, SooYeonKim
 최종 변경: jungpaeng,