This page was translated from English by the community. Learn more and join the MDN Web Docs community.

ν…μŠ€νŠΈ μ„œμ‹

이 μž₯μ—μ„œλŠ” JavaScriptμ—μ„œ λ¬Έμžμ—΄κ³Ό ν…μŠ€νŠΈλ‘œ μž‘μ—…ν•˜λŠ” 방법을 μ†Œκ°œν•©λ‹ˆλ‹€.

λ¬Έμžμ—΄

JavaScript의 λ¬Έμžμ—΄ μœ ν˜•μ€ μ›λ¬Έμ˜ 데이터λ₯Ό λ‚˜νƒ€λ‚΄λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λŠ” 16λΉ„νŠΈ λΆ€ν˜Έ μ—†λŠ” μ •μˆ˜ κ°’(UTF-16 code units)의 "μš”μ†Œ" μ§‘ν•©μž…λ‹ˆλ‹€. String의 각 μš”μ†Œ(문자)λŠ” Stringμ—μ„œ ν•˜λ‚˜μ˜ μœ„μΉ˜λ₯Ό μ°¨μ§€ν•©λ‹ˆλ‹€. 첫 번째 μš”μ†ŒλŠ” 인덱슀 0 λ‹€μŒμ€ 인덱슀 1 λ“±λ“±... λ¬Έμžμ—΄μ˜ κΈΈμ΄λŠ” μš”μ†Œμ˜ μˆ˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄ λ˜λŠ” λ¬Έμžμ—΄ 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

주의 : μ΄νŽ˜μ΄μ§€λ₯Ό μˆ˜μ •ν•œλ‹€λ©΄ MDN bug 857438이 해결될 λ•Œ κΉŒμ§€ U+FFFFμ΄μƒμ˜ 문자λ₯Ό ν¬ν•¨ν•˜μ§€ λ§ˆμ„Έμš”. ( https://bugzilla.mozilla.org/show_bug.cgi?id=857438 ).

λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄

μž‘μ€λ”°μ˜΄ν‘œλ‚˜ ν°λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ λ¬Έμžμ—΄μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€:

js
'foo';
"bar";

보닀 λ§Žμ€ λ¬Έμžμ—΄μ„ μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€

16μ§„μˆ˜ μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€

\x 뒀에 μˆ˜λŠ” 16μ§„μˆ˜λ‘œ 해석(interpreted)λ©λ‹ˆλ‹€.

js
"\xA9"; // "Β©"

μœ λ‹ˆμ½”λ“œ μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€

μœ λ‹ˆμ½”λ“œ μ΄μŠ€μΌ€μ΄ν”„ μ‹œν€€μŠ€λŠ” \u λ‹€μŒμ— 적어도 λ„€ 개의 16μ§„μˆ˜ 숫자(digit)λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.

js
"\u00A9"; // "Β©"

μœ λ‹ˆμ½”λ“œ μ½”λ“œ 포인트 μ΄μŠ€μΌ€μ΄ν”„

ECMAScript 6의 μƒˆλ‘œμš΄ κΈ°λŠ₯. μœ λ‹ˆ μ½”λ“œ 포인트 μ΄μŠ€μΌ€μ΄ν”„λ₯Ό μ‚¬μš©ν•˜λ©΄ 16 μ§„μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  문자λ₯Ό μ΄μŠ€μΌ€μ΄ν”„ 처리 ν•  수 μžˆμœΌλ―€λ‘œ μ΅œλŒ€ 0x10FFFF의 μœ λ‹ˆ μ½”λ“œ μ½”λ“œ 포인트λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•œ μœ λ‹ˆ μ½”λ“œ μ΄μŠ€μΌ€μ΄ν”„λ₯Ό μ‚¬μš©ν•˜λ©΄ λ™μΌν•œ κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•΄μ„œ μ„œλ‘œ 게이트λ₯Ό λ³„λ„λ‘œ μž‘μ„±ν•΄μ•Όν•˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.

String.fromCodePoint() λ‚˜ String.prototype.codePointAt()λ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

js
"\u{2F804}";

// the same with simple Unicode escapes
"\uD87E\uDC04";

λ¬Έμžμ—΄ 개체

λ¬Έμžμ—΄ κ°œμ²΄λŠ” λ¬Έμžμ—΄ κΈ°λ³Έ 데이터 ν˜•μ‹μ˜ λž˜νΌμž…λ‹ˆλ‹€.

js
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 속성을 λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄κ³Ό ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νŠΉλ³„νžˆ String 개체λ₯Ό μ‚¬μš©ν•  ν•„μš”κ°€ μ—†μ§€ μ•ŠλŠ” ν•œ, String κ°œμ²΄λŠ” 직관에 λ°˜ν•˜λŠ” 행동을 ν•  수 있기 λ•Œλ¬Έμ— μ—¬λŸ¬λΆ„μ€ string λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€. 예λ₯Όλ“€μ–΄:

js
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으둜 ν• λ‹Ήν•©λ‹ˆλ‹€. String κ°μ²΄λŠ” λ¬Έμžμ—΄μ—μžˆλŠ” UTF-16 μ½”λ“œ λ‹¨μœ„μ˜ 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 길이가 ν•˜λ‚˜μ˜ 속성을 κ°€μ§‘λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒ μ½”λ“œμ—μ„œλŠ” "Hello, World!"κ°€ UTF-16 μ½”λ“œ λ‹¨μœ„λ‘œ ν‘œν˜„λ˜λŠ” 13개의 문자λ₯Ό κ°€μ§€κ³  있기 λ•Œλ¬Έμ— x 값이 13이 λ©λ‹ˆλ‹€. λ°°μ—΄ λΈŒλž˜ν‚· μŠ€νƒ€μΌμ„ μ‚¬μš©ν•˜μ—¬ 각 μ½”λ“œ λ‹¨μœ„μ— μ•‘μ„ΈμŠ€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμžμ—΄μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ λ°°μ—΄κ³Ό 같은 객체이기 λ•Œλ¬Έμ— κ°œλ³„ 문자λ₯Ό λ³€κ²½ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

js
var mystring = "Hello, World!";
var x = mystring.length;
mystring[0] = "L"; // This has no effect, because strings are immutable
mystring[0]; // This returns "H"

μœ λ‹ˆ μ½”λ“œ 슀칼라 값이 U + FFFF (희귀 ν•œ 쀑ꡭ어 / 일본어 / ν•œκ΅­μ–΄ / λ² νŠΈλ‚¨μ–΄ 문자 및 일뢀 이λͺ¨ν‹°μ½˜)보닀 큰 λ¬ΈμžλŠ” 각각 μ„œλ‘œ λ‹€λ₯Έ 두 개의 μ½”λ“œ λ‹¨μœ„λ‘œ UTF-16에 μ €μž₯λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 단일 문자 U + 1F600 "Emoji grinning face"λ₯Ό ν¬ν•¨ν•˜λŠ” λ¬Έμžμ—΄μ€ 길이가 2μž…λ‹ˆλ‹€. λŒ€κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄λŸ¬ν•œ λ¬Έμžμ—΄μ˜ κ°œλ³„ μ½”λ“œ λ‹¨μœ„μ— μ•‘μ„ΈμŠ€ν•˜λ©΄ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” λŒ€λ¦¬ μ½”λ“œ λ‹¨μœ„κ°€μžˆλŠ” λ¬Έμžμ—΄μ΄ λ§Œλ“€μ–΄μ§€λŠ” λ“±μ˜ λ°”λžŒμ§ν•˜μ§€ μ•Šμ€ κ²°κ³Όκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. μœ λ‹ˆ μ½”λ“œ ν‘œμ€€ μœ„λ°˜ MDN 버그 857438이 μˆ˜μ • 된 후에 μ˜ˆμ œκ°€ 이 νŽ˜μ΄μ§€μ— μΆ”κ°€λ˜μ–΄μ•Όν•©λ‹ˆλ‹€. String.fromCodePoint () λ˜λŠ” String.prototype.codePointAt ()도 μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

String κ°μ²΄λŠ” λ‹€μ–‘ν•œ λ©”μ„œλ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€: λ¬Έμžμ—΄ 자체의 λ³€κ²½λœ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” substringκ³Ό toUpperCaseκ°€ 그것!

λ‹€μŒ ν‘œλŠ” λ¬Έμžμ—΄ 개체의 λ©”μ„œλ“œλ₯Ό μš”μ•½ν•œ κ²ƒμž…λ‹ˆλ‹€.

λ¬Έμžμ—΄ λ©”μ„œλ“œ

Method Description
charAt, charCodeAt, 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})

닀쀑 μ„ 

μ†ŒμŠ€μ— μ‚½μž…ν•˜λŠ” μƒˆλ‘œμš΄ μ„  λ¬ΈμžλŠ” ν…œν”Œλ¦Ώ λ¬Έμžμ—΄μ˜ μΌλΆ€μž…λ‹ˆλ‹€. 정상적인 λ¬Έμžμ—΄μ„ μ‚¬μš©ν•˜λ©΄, μ—¬λŸ¬λΆ„μ€ 닀쀑 μ„  λ¬Έμžμ—΄μ„ μ–»κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같은 ꡬ문을 μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€:

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

닀쀑 μ„  λ¬Έμžμ—΄κ³Ό 같은 효과λ₯Ό μ–»κΈ° μœ„ν•΄, μ—¬λŸ¬λΆ„μ€ 이제 μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€:

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

포함식

일반 λ¬Έμžμ—΄ λ‚΄μ—μ„œ ν‘œν˜„μ‹μ„ ν¬ν•¨ν•˜κΈ° μœ„ν•΄, λ‹€μŒκ³Ό 같은 ꡬ문을 μ‚¬μš©ν•©λ‹ˆλ‹€:

js
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의 μ‚¬μš©μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

js
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 κ°œμ²΄λŠ” λ‚ μ§œμ™€ μ‹œκ°„μ„ μ„œμ‹ν•˜κΈ°μ— μœ μš©ν•©λ‹ˆλ‹€. λ‹€μŒ μ½”λ“œλŠ” λ―Έκ΅­μ—μ„œ μ“°μ΄λŠ” μ˜μ–΄λ‘œ λ‚ μ§œλ₯Ό μ„œμ‹ν•©λ‹ˆλ‹€. (κ²°κ³ΌλŠ” λ‹€λ₯Έ μ‹œκ°„λŒ€μ™€ λ‹€λ¦…λ‹ˆλ‹€)

js
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κ°œμ²΄λŠ” 톡화λ₯Ό μœ„ν•΄ 숫자λ₯Ό μ„œμ‹ν•˜λŠ”κ²ƒμ— λŒ€ν•΄ μœ μš©ν•˜λ‹€.

js
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"둜 ν™•μž₯λμŠ΅λ‹ˆλ‹€.

js
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"

μ–΄λ–€ 독일말듀은 μ—¬λΆ„μ˜ λ³€λͺ¨μŒκ³Ό ν•¨κ»˜ ν™œμš©ν•œλ‹€. κ·Έλž˜μ„œ μ‚¬μ „μ•ˆμ—μ„œ 이것은 λ³€λͺ¨μŒμ„ λ¬΄μ‹œν•˜λΌκ³  λͺ…λ Ήν•˜κΈ°μ— μ‹€μš©μ μ΄λ‹€.

js
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에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ Introducing the JavaScript Internationalization APIλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.