๐ 26๊ฐ์ ๋ด์ฅ ๋ฌธ์์ด ๋ฉ์๋ | JavaScript
32550 ๋จ์ด codenewbietutorialwebdevjavascript
โฐ ์์ ์ค๋ช ์๋ ๋ชจ๋ ์๊ฐ ์คํฌํ์ ๋งํฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น์ ์ด ์ข์ํ๋ ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ ์ ์์ต๋๋ค.๐
๐ ๋ชจ๋ ์ ๋ชฉ์ MDN ๋ฌธ์์ ๋ํ ๋งํฌ์ ๋๋ค.
charAt ย
์ง์ ํ ์์ธ์ ์๋ ๋ฌธ์๋ฅผ ๋๋๋ ค์ค๋๋ค.
"Hello World".charAt(2); // returns "l"
// If we pass no value it defaults to an index of 0
"Hello World".charAt(); // returns "H"
// If we add an index that is undefined we get an empty string
"Hello World".charAt(20); // returns ""
charCodeAt ย
์ง์ ํ ์์ธ์ ์๋ ๋ฌธ์์ ์ ๋๋ฒ์ค์ ๋๋๋ ค์ค๋๋ค.
"Hello world".charCodeAt(2); // returns 72 for "l"
// If we pass no value it defaults to an index of 0
"Hello world".charCodeAt(); // returns 108 for "H"
concat ย
๋ ๊ฐ ์ด์์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๊ณ ์ฐ๊ฒฐ๋ ๋ฌธ์์ด์ ๋๋๋ ค์ค๋๋ค.
์ด๊ฒ์ ๋ฌธ์์ด์ ์ฌ์ฉ๋๋
+
์ฐ์ฐ์์ ๋งค์ฐ ๋น์ทํ๋ค."Hello".concat(" world"); // returns "Hello world"
// With multiple strings
"Hello".concat(" world", " and", " other", " planets"); // returns "Hello world and other planets"
endsWith ย
๋ฌธ์์ด์ด ์ง์ ํ ๋ฌธ์์ด๋ก ๋๋ ์ง ํ์ธํ์ญ์์ค.์ฐ๋ฆฌ๋ ์ ํํ ์ ์๋ ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ๊ณ ๋ฌธ์์ด์ ์ ํํ ์ ์๋ค.
"Dogs are the best!".endsWith('best'); // returns false
"Dogs are the best!".endsWith('best!'); // returns true
// With second parameter for ending index
"Dogs are the best!".endsWith('best', 17); // returns true (because we picked the end of the string is at index 17)
fromCharCode ย
์ ๋์ฝ๋ ๊ฐ์ ์ฝ๊ธฐ ๊ฐ๋ฅํ ๋ฌธ์๋ก ๋ณํํฉ๋๋ค.
fromCharCode
๋ ๋ฌธ์์ด์ ๋์์ด ๋ง์ง ์์ ์ ์ ๋ฐฉ๋ฒ ์ค์ ํ๋์ด๋ค.์ฐ๋ฆฌ๊ฐ ์ค๊ณง ์ฌ์ฉํด ์จ ๋ชจ๋ ๊ธฐํ ์์ฑ์ ์ค๋ก ์์ฑ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.์ฐ๋ฆฌ๋ String
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๊ฒ์ ์ ๊ทผํ๋ค.String.fromCharCode(67); // returns "C"
// Using multiple characters
String.fromCharCode(67, 111, 100, 250); // returns "Codรบ"
includes ย
๋ฌธ์์ด์ ํน์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
"Dogs are the best!".includes("Dogs") // returns true
// With optional starting index
"Dogs are the best!".includes("Dogs", 1) // returns false
"Dogs are the best!".includes("ogs", 1) // returns true
indexOf ย
๋ฌธ์์ด์์ ์ง์ ํ ๊ฐ์ด ์ฒ์ ๋ํ๋๋ ์์น๋ฅผ ๋๋๋ ค์ค๋๋ค.
"test one two test".indexOf("test") // returns 0
"test one two test".indexOf("x") // returns -1
// With optional starting index
"test one two test".indexOf("test", 1) // returns 13
lastIndexOf ย
๋ฌธ์์ด์์ ์ง์ ํ ๊ฐ์ด ๋ง์ง๋ง์ผ๋ก ๋ํ๋๋ ์์น๋ฅผ ๋๋๋ ค์ค๋๋ค.
"test one two test".lastIndexOf("test") // returns 13
// With optional limit because search starts from index 12.
"test one two test".lastIndexOf("test", 12) // returns 0
match
match () ๋ฐฉ๋ฒ์ ๋ฌธ์์ด์ ์ ๊ท ํํ์์ด๋ ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํฉ๋๋ค.
// returns the first match
"This is the BEST".match("i"); // returns a regex iterator like this ["i", index: 2, input: "This is the BEST", groups: undefined]
// With a regex looking for uppercase characters
"This is the BEST".match(/[A-Z]/); // returns a regex iterator like this ["T", index: 0, input: "This is the BEST", groups: undefined]
// you can get all the matches without the details if you use a global regular expression
"This is the BEST".match(/[A-Z]/g); // returns [ 'T', 'B', 'E', 'S', 'T' ]
matchAll
ES2020์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํ์ธํ์ญ์์ค.matchAll์ ์คํ ๋ก์ด๋ ๋ฐฐํฉ ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋ค.๋งค์นญ์ ์ํด ํ๋
RegExpStringIterator
๋ฅผ ๋๋๋ ค์ค๋๋ค.// Working with with the RegExpStringIterator can become easy to work with if we spread it into an array.
const matches = [..."This is the BEST".matchAll(/[A-Z]/g)];
matches.forEach(element => console.log(element));
/*
console.logs
[ 'T', index: 0, input: 'This is the BEST', groups: undefined ]
[ 'B', index: 12, input: 'This is the BEST', groups: undefined ]
[ 'E', index: 13, input: 'This is the BEST', groups: undefined ]
[ 'S', index: 14, input: 'This is the BEST', groups: undefined ]
[ 'T', index: 15, input: 'This is the BEST', groups: undefined ] */
๊ต์ฒด๊ธฐ ์ฌ์ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ docs๋ฅผ ์ฐธ์กฐํ์ญ์์ค.normalize
์ฐ๋ฆฌ๋normalize๋ก ์ ๋๋ฒ์ค ๋ฌธ์์ด์ ๊ท๋ฒํํ ์ ์๋๋ฐ, ์ด๊ฒ์ ๋ฌด์จ ๋ป์ ๋๊น?๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ์ธ๋ฅ๊ฐ ์ฝ์ ์ ์๋ ํ์์ ๋ณผ ์ ์๋ค.
"\u0043\u006f\u0064\u00fa".normalize(); // returns "Codรบ"
ย padEnd
๋ฌธ์์ด์ ๋์ "padding"์ ์ถ๊ฐํ์ฌ ๊ธธ์ด์ ๊ฐ๊ฒ ํ ์ ์์ต๋๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๋ฐฑ์ผ๋ก ์ฑ์ฐ์ง๋ง ๋ฌธ์๋ฅผ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค.
// Entire length is 10 after padding
"Hello".padEnd(10); // returns "Hello "
// Entire length is 10 after padding with characters too
"Hello".padEnd(10, "*"); // returns "Hello*****"
padStart
๋ฌธ์์ด์ ์์ ๋ถ๋ถ์ "padding"์ ์ถ๊ฐํ์ฌ ๊ธธ์ด์ ๊ฐ๊ฒ ํ ์ ์์ต๋๋ค.๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๋ฐฑ์ผ๋ก ์ฑ์ฐ์ง๋ง ๋ฌธ์๋ฅผ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค.
// Entire length is 10 after padding
"Hello".padStart(10); // returns " Hello"
// Entire length is 10 after padding with characters too
"Hello".padStart(10, "*"); // returns "*****Hello"
์ด๋ฌํ ์ถฉ์ ์ ์ค์ํ์ง ์์ ์๋ ์์ง๋ง, npm์์ ์ถ์ถํ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ถ์ถ๋์ด ์ธํฐ๋ท์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๊ดดํ ์๊ฐ ์๋ค.๊ตฌ๊ธ์์ ์ผ์ชฝ ํค๋ณด๋ ์ด๋ฒคํธ๋ฅผ ๊ฒ์ํ๋ฉด ๊ด๋ จ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.ย repeat
์ซ์๋ฅผ ๋งค๊ฐ ๋ณ์๋ก ํ๊ณ ์ง์ ํ ๋ฌธ์์ด์ ํ์๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ๋จ์ผ ๋ฌธ์์ด๋ก ๋๋๋ ค์ค๋๋ค.
"Hello".repeat(3); // returns "HelloHelloHello".
replace
๋ฌธ์์ด์์ ์ง์ ํ ๊ฐ์ด๋ ์ ๊ท ํํ์์ ๊ฒ์ํ๊ณ ์ง์ ํ ๊ฐ์ ๋ฐ๊พผ ์ ๋ฌธ์์ด์ ๋๋๋ ค์ค๋๋ค.์ฐ๋ฆฌ๋ ๋ฌธ์์ด๋ก ์ด ๊ฐ์ ๋ฐ๊พธ๊ฑฐ๋ ํจ์๋ฅผ ์ ๋ฌํด์ ์ผ์นํ๋ ๋์์ ํ ์ ์๋ค.์ฐ๋ฆฌ๊ฐ ์ ์ธ๊ณ ์ ๊ท ํํ์์ ํต๊ณผํ์ง ์์ผ๋ฉด, ๊ทธ๊ฒ์ ์ฒซ ๋ฒ์งธ๋ก ๋ฐ๊ฒฌ๋ ์ ๊ท ํํ์์ ๋์ฒดํ ๋ฟ์ด๋ค.
"cat, cat, cat".replace(/cat/, 'dog'); // returns "dog, cat, cat"
"cat, cat, cat".replace(/cat/g, 'dog'); // returns "dog, dog, dog"
"cat, cat, cat".replace("cat", 'dog'); // returns "dog, cat, cat"
"cat, cat, cat, bird".replace("cat", (i) => i + "dog"); // returns "catdog, cat, cat, bird"
ย replaceAll
์ฐ๋ฆฌ๋ ์ ๊ท ํํ์์ด๋ ๋ฌธ์์ด๋ก ๋ฌธ์์ด์ ๋ชจ๋ ์ค๋ก๋ฅผ ๋ฐ๊ฟ ์ ์๋ค.์ฐ๋ฆฌ๋ ๋ฌธ์์ด๋ก ์ด ๊ฐ์ ๋ฐ๊พธ๊ฑฐ๋ ํจ์๋ฅผ ์ ๋ฌํด์ ์ผ์นํ๋ ๋์์ ํ ์ ์๋ค.๊ธ๋ก๋ฒ ๋ ์ง์คํธ๋ฅผ ์ฌ์ฉํ ๋
replace
์ replaceAll
์ฌ์ด์๋ ํฐ ์ฐจ์ด๊ฐ ์๋ค.Replace all์ ์ ์ญ ์ ๊ท ํํ์๋ง ์ฌ์ฉํ์ง๋ง ๋ฌธ์์ด์ ์ ๋ฌํ๋ฉด ๋ฌธ์์ด์ ๋ชจ๋ ์ธ์คํด์ค๊ฐ ์๋์ผ๋ก ๋ฐ๋๋๋ค.๋ ๋ฒ์งธ ๋งค๊ฐ ๋ณ์๋ ๋ชจ๋ ์ค๋ก๋ฅผ ๋ฐ๊พธ๋ ๋ฌธ์์ด์ผ ์๋ ์๊ณ , ๋ชจ๋ ์ค๋ก๋ฅผ ์กฐ์ํ๋ ํจ์์ผ ์๋ ์๋ค."cat, cat, cat, bird".replaceAll(/cat/g, 'dog'); // returns "dog, dog, dog, bird"
"cat, cat, cat, bird".replaceAll("cat", 'dog'); // returns "dog, dog, dog, bird"
// With a function
"cat, cat, cat, bird".replaceAll("cat", (i) => i + "dog"); // returns "catdog, catdog, catdog, bird"
ย search
๋ฌธ์์ด์์ ์ง์ ํ ๊ฐ์ด๋ ์ ๊ท ํํ์์ ๊ฒ์ํ๊ณ ์ผ์นํ๋ ์์ ์์น๋ฅผ ๋๋๋ ค์ค๋๋ค.
"cat, dog, cat".search("dog"); // returns 5
// With a regex
"cat, dog, cat".search(/dog/g); // returns 5
slice
๋ฌธ์์ด์ ์ผ๋ถ๋ถ์ ์ถ์ถํ๊ณ ์ ๋ฌธ์์ด์ ๋๋๋ ค์ค๋๋ค.
"This is a string I want to slice".slice(27); // returns 'slice'
"This is a string I want to slice".slice(27, 28); // returns 's'
// And we can work backwards with negative values such as
"This is a string I want to slice".slice(-5); // returns "slice"
"This is a string I want to slice".slice(-5, -1); // returns "slic"
split ย
๋ฌธ์์ด์ ํ์ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ๋ถํ ํฉ๋๋ค.์ฐ๋ฆฌ๋ ์ ํํ ์ ์๋ ์ ํ์ ๋ ๋ฒ์งธ ๋งค๊ฐ ๋ณ์๋ก ์ ๊ณตํ ์ ์๋ค.
// For all characters to be split give an empty string
"Hello darkness".split(""); // returns ["H", "e", "l", "l", "o", " ", "d", "a", "r", "k", "n", "e", "s", "s"]
// To split at spaces
"Hello darkness my old friend".split(" "); // returns ["Hello", "darkness", "my", "old", "friend"]
To limit the return length we can use an optional second parameter
"Hello darkness my old friend".split(" ", 2);ย // returns ["Hello", "darkness"]
startsWith
๋ฌธ์์ด์ด ์ง์ ๋ ๋ฌธ์๋ก ์์๋์๋์ง ํ์ธํ๊ณ ๋ถ์ธ ๊ฐ์ ๋๋๋ ค์ค๋๋ค.์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ ํํ ์ ์๋ ์์ ์ธ๋ฑ์ค๋ฅผ ๋ ๋ฒ์งธ ์ธ์๋ก ์ค ์ ์๋ค.
"Hello".startsWith("h"); // true
"Hello".startsWith("e"); // false
// With optional starting index
"Hello".startsWith("e", 1); // true
ย substring
์ง์ ํ ๋ ์์ธ ์ฌ์ด์ ๋ฌธ์์ด์์ ๋ฌธ์๋ฅผ ์ถ์ถํฉ๋๋ค.๋ ๋ฒ์งธ ๋งค๊ฐ ๋ณ์๋ ์ ํํ ์ ์๋ค.
"Hello".substring(1, 4); // "ell"
// If we give no second parameter it will pick assume you have no end index.
"Hello".substring(1); // returns "ello"
toLowerCase
๋ฌธ์์ด์ ์๋ฌธ์๋ก ๋ณํ
"HeLlO wOrLd".toLowerCase(); // returns "hello world"
toUpperCase ย
๋ฌธ์์ด์ ๋๋ฌธ์๋ก ๋ณํํฉ๋๋ค.
"Hello world".toUpperCase(); // returns "HELLO WORLD"
trim ย
๋ฌธ์์ด ์์ชฝ์ ๊ณต๋ฐฑ์ ์ญ์ ํฉ๋๋ค.
" Hello world ".trim(); // returns "Hello world"
trimEnd
๋์์ ๊ณต๋ฐฑ ํธ๋ฆผ
" Hello world ".trim(); // returns " Hello world"
trimStart
๋ฌธ์์ด์ ์์์์ ๊ณต๋ฐฑ์ ์๋ผ๋ ๋๋ค.
" Hello world ".trim(); // returns "Hello world "
๊ฐ์
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ 26๊ฐ์ ๋ด์ฅ ๋ฌธ์์ด ๋ฉ์๋ | JavaScript), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/nialljoemaher/26-built-in-string-methods-javascript-56pํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค