9-8. String 오브젝트 / 문자열 추출
substring()
구분 | 데이터(값) |
---|---|
data | 변환 대상 |
파라미터 | 첫번째 파라미터 : 시작 인덱스 두번째 파라미터 : 끝 인덱스 |
반환 | 결과 |
파라미터의 시작 인덱스부터 끝 인덱스 직전까지 반환
var value = "01234567"; console.log(value.substring(2, 5)); // 234
- 2번 인덱스부터 5번 인덱스 직전까지 반환
두번째 파라미터를 작성하지 않으면 반환 대상의 끝까지 반환
var value = "01234567"; console.log(value.substring(5)); // 567 console.log(value.substring()); // 01234567
- 첫번째 파라미터만 작성하면 첫번째 인덱스부터 끝까지 반환
- 파라미터를 모두 작성하지 않으면 전체 반환
다양한 추출 조건 작성
var value = "01234567"; console.log(value.substring(5, 20)); // 567
- 두번째 파라미터 값이 전체 length 보다 크면 전체 문자열 length 사용
- 따라서 시작 인덱스부터 끝까지 반환
var value = "01234567"; console.log(value.substring(-7, 2)); // 01 console.log(value.substring(5, 1)); // 1234 console.log(value.substring(5, "A")); // 01234
- 파라미터 값이 음수이면 0으로 간주
0번 인덱스부터 2번 인덱스 직전까지 반환 - 첫번째 파라미터 값이 두번째보다 크면 파라미터 값을 바꿔서 처리
value.substring(1, 5)
형태가 됨 - NaN은 0으로 간주
첫번째 파라미터 값이 두번째보다 크므로value.substring(0, 5)
형태가 됨
substr()
구분 | 데이터(값) |
---|---|
data | 변환 대상 |
파라미터 | 첫번째 파라미터 : 시작 인덱스 두번째 파라미터 : 반환할 문자 수 |
반환 | 결과 |
파라미터의 시작 인덱스부터 지정한 문자 수를 반환
var value = "01234567"; console.log(value.substr(0, 3)); // 012
- 0번 인덱스부터 문자 3개를 반환
첫번째 파라미터
값이 음수이면 length에서 파라미터 값을 더해 시작 인덱스로 사용
var value = "01234567"; console.log(value.substr(-3, 3)); // 567
처음 파라미터 값이 음수이면 length 에서 처음 파라미터 값을 더해 시작 인덱스로 사용합니다.
8 - 3 = 5
즉, value.substr(5, 3)
두번째 파라미터를 작성하지 않으면 양수 무한대로 간주
var value = "01234567"; console.log(value.substr(4)); // 4567 console.log(value.substr()); // 01234567
- 두번째 파라미터를 작성하지 않으면 양수 무한대, 즉 최대값이므로
- 첫번째 파라미터부터 전체 반환
- 첫번째 파라미터를 작성하지 않으면 0으로 간주
따라서 전체가 반환됩니다.
slice()
구분 | 데이터(값) |
---|---|
data | 변환 대상 |
파라미터 | 첫번째 파라미터 : 시작 인덱스 두번째 파라미터 : 끝 인덱스 |
반환 | 결과 |
파라미터의 시작 인덱스부터 끝 인덱스 직전까지 반환
var value = "01234567"; console.log(value.slice(1, 4)); // 123 console.log(value.slice(false, 4)); // 0123
- 1번 인덱스부터 4번 인덱스 직전까지 반환
- false, undefined, null, 빈문자열은 0으로 간주
첫번째 파라미터
값을 작성하지 않거나 NaN이면 0으로 간주
var value = "01234567"; console.log(value.slice("A")); // 01234567 console.log(value.slice()); // 01234567
- 첫번째 파라미터가 NaN이면 0으로 간주
- 파라미터를 모두 작성하지 않으면 전체 반환
두번째 파라미터
작성하지 않으면 length 사용
var value = "01234567"; console.log(value.slice(5)); // 567 console.log(value.slice(5, 3)); // ""
- 두번째를 작성하지 않으면 length 사용
- 첫번째가 두번째보다 크거나 같으면 빈문자열
substring()은 첫번째가 두번째보다 크거나 같으면 첫번째, 두번째 서로 바꿔서 실행했는데 slice는 그렇지 않다.
값이 음수이면 length에 더해 사용
var value = "01234567"; console.log(value.slice(4, -2)); // 45 // value.slice(4, -2 + 8); // value.slice(4, 6); // 45 console.log(value.slice(-5, -2)); // 345 // value.slice(-5 + 8, -2 + 8); // value.slice(3, 6); // 345 console.log(value.slice(-2, -5)); // "" // value.slice(6, 3); // ""
- 파라미터 값이 음수라면 length 를 더해 사용.
더한 값이 0보다 작으면 0을 사용 - 3개의 결과에 대한 논리를 설명하세요.