개발자 첫걸음/The WEb Developer BootCamp 2022

Section 15: JavaScript 문자열

프로아마추어 2022. 4. 20. 01:55

 

1. 문자열 개요

  • 텍스트 데이터를 다룰 때 사용한다.
  • "" -> 문자열 지정 방법
  • ''(작은따옴표), ""(큰따옴표) 모두 사용 가능하며 일관성있게 사용해야 한다.
let name1 = 'Kate'; (O)
let name2 = "Kate"; (O)
let name3 = 'Kate"; (X)

// 혼합 사용의 예
let intro = "I'm a boy";
let say = 'I said "go away"';

 

2. Indices와 Length

//문자열은 인덱싱 되어 있다.
'hello' -> h: 0 / e: 1 / l: 2 / l: 3 / o: 4
 
//각각의 인덱스로 문자에 접근이 가능하다.
let greeting = 'hello';
greeting[0] // 'h'
greeting[1] // 'e'
greeting[99] // undefined 값이 존재하지 않음

// 문자열의 길이, 총 문자 수 5
//index는 0부터 시작하기 때문에 length - 1이 된다.

index // 4  
greeting.length // 5

// 문자열의 연결
let first = '강남';
let last = '스타일';
first + last; // '강남스타일'

let full = first + ' ' + last;
full //'강남 스타일'

// 숫자와 문자열을 더하면 문자열이 된다.
let result = 1 + '안녕'; // '1안녕'

console.log(typeof result) //string

 

 

3. 문자열 규칙

  • 문자열에는 내장되어 있는 함수가 있다.

    1. 문자를 찾거나
    2. 일부 문자를 교체하거나
    3. 문자열을 결합할 수 있다
/* 
함수 사용의 기본 구조
문자열.메서드이름();
thing.method();
*/

let msg = 'I am a king';

msg.toUpperCase(); // 'I AM A KING'
let msg = 'I am a king';

msg.toUpperCase(); // 'I AM A KING'
msg // 'I am a king' 원본은 그대로

// 대문자로 변환된 문자열 저장
let result = msg.toUpperCase(); // 'I AM A KING'

/*
toUpperCase() 문자열을 대문자로 바꿔준다
toLowerCase() 문자열을 소문자로 바꿔준다
trim() 문자열의 양끝의 공백을 없애준다.
-> 세 메서드 모두 원본 데이터 수정되지 않음
*/

// 두개 이상의 메서드를 동시에 사용할 수 있다.
let str = '     hi, nice to meet you     ';
let result = str.trim().toUpperCase(); // 공백제거, 대문자 변환
console.log(result); // HI, NICE TO MEET YOU

 

4. 인수가 있는 문자열 규칙

// 아래와 같은 방식으로 인자(arg)를 받는다.
// 인자란 메서드로 전달되어서 메서드의 동작을 변경하는 입력 값이다.
// thing.method(arg)


// indexOf
// 문자열의 특정 문자의 인덱스를 반환하는 메서드 
// 특정 문자가 존재하면 index값, 존재하지 않으면 -1을 반환한다.
'hi hello'.indexOf(' '); // 2

// slice
//  문자열의 일부를 자른다.
// str.slice(beginIndex[, endIndex]);
// endIndex 선택 사항
// 원본에 영향을 끼치지 않는다.

'hello'.slice(3);

console.log('hello'.slice(3)); // 'lo'
console.log('hello'.slice(1,2));
console.log('hello'.slice(-2)); // 'lo' 음수는 뒤에서 부터 인덱스를 센다.


// replace
// var newStr = str.replace(regexp|substr, newSubstr|function)
// 첫번째 인자: 문자열이 시작되는 지점
// 두번째 인자: 해당 지점에 교체해여 들어가려는 값
// 원본에 영향을 끼치지 않는다.

let msg = '울지마 울보야';
console.log(msg.replace('울보야', '바보야')); // 울지마 바보야
console.log(msg); // 울지마 울보야

console.log(msg.replaceAll('울','웅얼')); // 웅얼지마 웅얼보야

console.log('하'.repeat(10)); // 하하하하하하하하하하

 

 

5. 엄청나게 유용한 문자열 템플릿

let goods = '아이유 포스터';
let price = '200000';
let qty = 10;

// 위의 변수와 다른 문자열과 같이 사용한다면 + 기호와 따옴표 기호를 번거롭게 거듭해서 사용해야 한다.
console.log(goods + ' 총 ' + qty + '개 구매하셨습니다. 총 금액: ' + price * qty + '원 입니다.');

// Template Literals
// 템플릿 리터럴을 사용하면 위의 불편함을 해소할 수 있다.
// ``기호 와 함께 변수는 ${변수}형태로 사용하면 두 문장의 결과 값이 같은 것을 알 수 있다.
console.log(`${goods} 총 ${qty}개 구매하셨습니다. 총 금액: ${price * qty}원 입니다.`);

 

6. Undefined 와 Null

 

둘 다 원시타입 중 하나이다.


NULL

  • 반드시 할당되어져야 한다.
  • 의도적으로 값이 없음을 나타내고 싶을 때 부여한다.


Undefined

  • 변수에 값이 할당되지 않은 값을 undefined라고 한다.

 

7. 난수와 Math 객체

 

Math.PI; // 3.141592653589793

// 반올림
Math.round(4.9) // 5

// 절대값
Math.abs(-456) // 456

// 지수값 2^3 = 8
Math.pow(2, 3) // 8

// 소수점 이하 버리기
Math.floor(3.9999) // 3

// 0.1xx <= num <= 0.9xxx
Math.random();

// 1 ~ 10까지 난수 생성 함수 만들기
Math.floor(Math.random() * 10) + 1;​