์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- history api
- ๋ธ๋ก๊ทธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- float
- ์ฝ๋ฉํ ์คํธ
- Props
- useRef
- fetch API
- useEffect
- position
- ํ๋ก ํธ์๋
- ์๊ณ ๋ฆฌ์ฆ
- REACT
- Flex
- ๋ฐ๋ธ์ฝ์ค
- Gatsby
- CSS
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- Today
- Total
Daehyunii's Dev-blog
32์ฅ String ๋ณธ๋ฌธ
32์ฅ String
Daehyunii 2022. 7. 27. 19:41ํ์ค ๋นํธ์ธ ๊ฐ์ฒด์ธ String์ ์์ ํ์ ์ธ ๋ฌธ์์ด์ ๋ค๋ฃฐ ๋ ์ ์ฉํ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
32.1 String ์์ฑ์ ํจ์
ํ์ค ๋นํธ์ธ ๊ฐ์ฒด์ธ String ๊ฐ์ฒด๋ ์์ฑ์ ํจ์ ๊ฐ์ฒด๋ค. ๋ฐ๋ผ์ new ์ฐ์ฐ์์ ํจ๊ป ํธ์ถํ์ฌ String ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ค. String ์์ฑ์ ํจ์์ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์๊ณ new ์ฐ์ฐ์์ ํจ๊ป ํธ์ถํ๋ฉด [[StringData]] ๋ด๋ถ ์ฌ๋กฏ์ ๋น ๋ฌธ์์ด์ ํ ๋นํ String ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
const strObj = new String();
console.log(strObj); // String length: 0
String ์์ฑ์ ํจ์์ ์ธ์๋ก ๋ฌธ์์ด์ ์ ๋ฌํ๋ฉด์ new ์ฐ์ฐ์์ ํจ๊ป ํธ์ถํ๋ฉด [[StringData]] ๋ด๋ถ ์ฌ๋กฏ์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ ํ ๋นํ String ๋ํผ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค
const strObj = new String('lee');
console.log(strObj); // String {'lee'}
String ๋ํผ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก length ํ๋กํผํฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ ์ซ์ ํ์์ ๋ฌธ์์ด์ ํ๋กํผํฐ ํค๋ก, ๊ฐ ๋ฌธ์๋ฅผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ฐ๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด์ด๋ฉด์ ์ดํฐ๋ฌ๋ธ์ด๋ค. ๋ฐ๋ผ์ ๋ฐฐ์ด๊ณผ ์ ์ฌํ๊ฒ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ฌธ์์ ์ ๊ทผํ ์ ์๋ค. ๋จ, ๋ฌธ์์ด์ ์์ ๊ฐ์ด๋ฏ๋ก ๋ณ๊ฒฝํ ์ ์๋ค. ์ด๋ ์๋ฌ๋ ๋ฐ์ํ์ง ์๋๋ค.
const strObj = new String('lee');
console.log(strObj); // String {'lee'}
console.log(strObj[0]); // l
console.log(strObj[1]); // e
console.log(strObj[2]); // e
strObj[0] = 'w';
console.log(strObj); // String {'lee'}
String ์์ฑ์ ํจ์์ ์ธ์๋ก ๋ฌธ์์ด์ด ์๋ ๊ฐ์ ์ ๋ฌํ๋ฉด ์ธ์๋ฅผ ๋ฌธ์์ด๋ก ๊ฐ์ ๋ณํํ ํ, [[StringData]] ๋ด๋ถ ์ฌ๋กฏ์ ๋ณํ๋ ๋ฌธ์์ด์ ํ ๋นํ String ๋ํผ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
const strObj = new String(123);
console.log(strObj); // String {'123'}
console.log(strObj[0]); // 1
console.log(strObj[1]); // 2
console.log(strObj[2]); // 3
console.log(strObj); // String {'123'}
๋ง์ฝ new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ String ์์ฑ์ ํจ์๋ฅผ ํธ์ถํ๋ฉด String ์ธ์คํด์ค๊ฐ ์๋ ๋ฌธ์์ด์ ๋ฐํํ๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ช ์์ ์ผ๋ก ํ์ ์ ๋ณํํ๊ธฐ๋ ํ๋ค.
console.log(String(1)); // '1'
console.log(String(NaN)); // 'NaN'
console.log(String(true)); // 'true'
console.log(String(false)); // 'false'
32.2 length ํ๋กํผํฐ
length ํ๋กํผํฐ๋ ๋ฌธ์์ด์ ๋ฌธ์ ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
console.log('hello'.length); // 5
console.log('hi'.length); // 2
String ๋ํผ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก length ํ๋กํผํฐ๋ฅผ ๊ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ ์ซ์๋ฅผ ํ๋กํผํฐ ํค๋ก, ๊ฐ ๋ฌธ์๋ฅผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ฐ์ง๋ฏ๋ก String ๋ํผ ๊ฐ์ฒด๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ค.
32.3 String ๋ฉ์๋
String ๊ฐ์ฒด์๋ ์๋ณธ String ๋ํผ ๊ฐ์ฒด๋ฅผ ์ง์ ๋ณ๊ฒฝํ๋ ๋ฉ์๋๋ ์กด์ฌํ์ง ์๋๋ค. String ๊ฐ์ฒด์ ๋ฉ์๋๋ ์ธ์ ๋ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํํ๋ค. ๋ฌธ์์ด์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ String ๋ํผ ๊ฐ์ฒด๋ ์ฝ๊ธฐ ์ ์ฉ ๊ฐ์ฒด๋ก ์ ๊ณต๋๋ค.
1) String.prototype.indeOf
๋์ ๋ฌธ์์ด์์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ ๊ฒ์ํ์ฌ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
๊ฒ์ ์คํจ์ -1 ๋ฐํ
๋ ๋ฒ์งธ ์ธ์๋ก ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค ์ ๋ฌ(์ต์ )
2) String.prototype.search
๋์ ๋ฌธ์์ด์์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ๊ท ํํ์๊ณผ ๋งค์นํ๋ ๋ฌธ์์ด์ ๊ฒ์ํ์ฌ ์ผ์นํ๋ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ
๊ฒ์ ์คํจ์ -1 ๋ฐํ
3) String.prototype.includes
๋์ ๋ฌธ์์ด์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํ
๋ ๋ฒ์งธ ์ธ์๋ก ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค ์ ๋ฌ(์ต์ )
4) String.prototype.startsWith
๋์ ๋ฌธ์์ด์ด ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด๋ก ์์ํ๋์ง ํ์ธํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํ
๋ ๋ฒ์งธ ์ธ์๋ก ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค ์ ๋ฌ(์ต์ )
5) String.prototype.endsWith
๋์ ๋ฌธ์์ด์ด ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด๋ก ๋๋๋์ง ํ์ธํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํ
๋ ๋ฒ์งธ ์ธ์๋ก ๊ฒ์ํ ๋ฌธ์์ด์ ๊ธธ์ด ์ ๋ฌ(์ต์ )
6) String.prototype.charAt
๋์ ๋ฌธ์์ด์์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ธ๋ฑ์ค์ ์์นํ ๋ฌธ์๋ฅผ ๊ฒ์ํ์ฌ ๋ฐํ
7) String.prototype.substring
๋์ ๋ฌธ์์ด์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ธ๋ฑ์ค์ ์์นํ๋ ๋ฌธ์๋ถํฐ ๋ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ธ๋ฑ์ค์ ์์นํ๋ ๋ฌธ์์ ๋ฐ๋ก ์ด์ ๋ฌธ์๊น์ง์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฐํ(๋ ๋ฒ์งธ ์ธ์๋ ์ต์ )
8) String.prototype.slice
substring ๋ฉ์๋์ ๋์ผํ๊ฒ ๋์(๋จ, ์์์ธ ์ธ์๋ฅผ ์ ๋ฌํ ์ ์๋ค.)
9) String.prototype.toUpperCase
๋์ ๋ฌธ์์ด์ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณ๊ฒฝํ ๋ฌธ์์ด์ ๋ฐํ
10) String.prototype.toLowerCase
๋์ ๋ฌธ์์ด์ ๋ชจ๋ ์๋ฌธ์๋ก ๋ณ๊ฒฝํ ๋ฌธ์์ด์ ๋ฐํ
11) String.prototype.trim
๋์ ๋ฌธ์์ด ์๋ค์ ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ์์ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๊ฑฐํ ๋ฌธ์์ด์ ๋ฐํ
12) String.prototype.repeat
๋์ ๋ฌธ์์ด์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ์๋งํผ ๋ฐ๋ณตํด ์ฐ๊ฒฐํ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํ
์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ ์๊ฐ 0์ด๋ฉด ๋น ๋ฌธ์์ด ๋ฐํ
์์๋ฉด RangeError ๋ฐ์
์ธ์ ์๋ต์ ๊ธฐ๋ณธ๊ฐ 0 ์ค์
13) String.prototype.replace
๋์ ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด ๋๋ ์ ๊ทํํ์์ ๊ฒ์ํ์ฌ ๋ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ ๋ฌธ์์ด๋ก ์นํํ ๋ฌธ์์ด์ ๋ฐํ
14) String.prototype.split
๋์ ๋ฌธ์์ด์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ ๋ฌธ์์ด ๋๋ ์ ๊ท ํํ์์ ๊ฒ์ํ์ฌ ๋ฌธ์์ด์ ๊ตฌ๋ถํ ํ ๋ถ๋ฆฌ๋ ๊ฐ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด ๋ฐํ
์ธ์๋ก ๋น ๋ฌธ์์ด ์ ๋ฌํ๋ฉด ๊ฐ ๋ฌธ์๋ฅผ ๋ชจ๋ ๋ถ๋ฆฌํ๊ณ , ์ธ์๋ฅผ ์๋ตํ๋ฉด ๋์ ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๋จ์ผ ์์๋ก ํ๋ ๋ฐฐ์ด ๋ฐํ
๋ ๋ฒ์งธ ์ธ์๋ก ๋ฐฐ์ด์ ๊ธธ์ด ์ง์ (์ต์ )
'๐ Language & CS knowledge > JavaScript (๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ Deep Dive)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
35์ฅ ์คํ๋ ๋ ๋ฌธ๋ฒ (0) | 2022.07.28 |
---|---|
34์ฅ ์ดํฐ๋ฌ๋ธ (0) | 2022.07.27 |
28์ฅ Number (0) | 2022.07.27 |
27์ฅ ๋ฐฐ์ด (0) | 2022.07.27 |
26์ฅ ES6 ํจ์์ ์ถ๊ฐ ๊ธฐ๋ฅ (0) | 2022.07.26 |