[Study/JavaScript] 문자열 심화 / 문자열 vs. 배열

SoShy·2023년 11월 30일

JavaScript_Study

목록 보기
15/36
post-thumbnail

🥕 문자열 심화

  • 문자열도 객체처럼 사용이 가능함.

1. 문자열 길이

let myString = 'Hi Soshy';

console.log(myString.length);
.
.
.
>> 8

2. 요소 접근

  • charAt[]은 문자열에서만 사용 가능
let myString = 'Hi Soshy';

console.log(myString[3]);
console.log(myString.charAt[3]);
.
.
.
>>> S
	S

3. 요소 탐색

let myString = 'Hi Soshy';

console.log(myString.indexOf('S'));
console.log(myString.lastIndexOf('S'));
.
.
.
>>> 3
	5

4. 대소문자 변환

let myString = 'Hi Soshy';

console.log(myString.toUpperCase());
console.log(myString.toLowerCase());
.
.
.
>>> HI SOSHY
	hi soshy

5. 양 끝 공백 제거

let myString = ' Hi Soshy ';

console.log(myString);
console.log(myString.trim());
.
.
.
>>>  Hi Soshy 
	Hi Soshy

6. 부분 문자열 접근

  • slice(start, end)가 기본 구조
  • 끝 index 바로 직전까지의 범위를 가져옴.
let myString = ' Hi Soshy ';

console.log(myString.slice(0, 2));
console.log(myString.slice(3));		// 두 번째 parameter는 생략 가능
console.log(myString.slice());
.
.
.
>>> Hi
	Soshy
	Hi Soshy

7. for...of 반복문 활용

let myString = 'Soshy';
//
for (let str of myString) {
  console.log(str);
}
.
.
.
>>> S
	o
    s
    h
    y

  • 배열과 비슷하게 사용하기는 하지만, 자료형 자체가 다르다는 점 기억
let myString = 'Soshy';
let myArray = ['S', 'o', 's', 'h', 'y'];

console.log(typeof myString);
console.log(typeof myArray);
.
.
.
>>> string
	object
let myString = 'Soshy';
let myArray = ['S', 'o', 's', 'h', 'y'];

console.log(myString === myArray);
console.log(myString == myArray);
.
.
.
>>> false
	false

8. 문자열 <-> 배열 변환

  • split(''): 문자열의 문자들을 하나씩 분리하여 배열로 만드는 함수
  • join(''): 배열의 요소들을 하나의 문자로 합치는 함수
let my_string = 'bread';

console.log(my_string.split('').reverse().join(''));
.
.
.
>>> daerb


🥕 문자열 vs. 배열

  • 배열mutable (바뀔 수 있는) 자료형
  • 문자열immutable (바뀔 수 없는) 자료형

  • 때문에, 문자열에는 splice 같은 method는 사용할 수 없음!

// 배열은 mutable
let myArray = ['S', 'o', 's', 'h', 'y'];
myArray[0] = 'B';
console.log(myArray);

// 문자열은 immutable
let myString = 'Soshy';
myString[0] = 'B';
console.log(myString);
.
.
.
>>> (6) ["B", "o", "s", "h", "y"]
	Soshy
profile
프론트엔드 개발자가 되기 위해 노력 중인 새싹🌱 입니다.

0개의 댓글