Javascript & Typescript
[Javascript] substring() method
zubetcha
2021. 11. 13. 13:23
substring() method
- 형태: str.substring(indexStart, indexEnd)
- String 오브젝트의 시작 인덱스부터 종료 인덱스까지의 부분 문자열을 반환
- indexStart: 반환할 문자열의 시작 인덱스 (반환 문자열에 포함)
- indexEnd (optional) : 반환할 문자열의 마지막 인덱스의 + 1
- indexEnd에 해당하는 값은 반환되는 문자열에 포함되지 않음
- indexEnd 가 생략된 경우, indexStart부터 문자열의 끝까지 모든 문자를 반환
- indexStart == indexEnd 인 경우, 빈 문자열 반환 ' ';
- indexStart > indexEnd 인 경우, 두 인덱스의 자리를 바꾼 것처럼 메소드 실행
- indexStart || indexEnd < 0 인 경우, 인덱스를 0 으로 처리
- indexStart || indexEnd > str.length 인 경우, 인덱스를 str.length 로 처리
- indexStart || indexEnd 가 숫자가 아닌 경우 (Not-a-Number), 인덱스를 0으로 처리
let anyString = 'Mozilla';
// Displays 'M'
console.log(anyString.substring(0, 1));
console.log(anyString.substring(1, 0)); // indexStart > indexEnd
// Displays 'Mozill'
console.log(anyString.substring(0, 6));
// Displays 'lla'
console.log(anyString.substring(4));
console.log(anyString.substring(4, 7));
console.log(anyString.substring(7, 4)); // indexStart > indexEnd
// Displays 'Mozilla'
console.log(anyString.substring(0, 7));
console.log(anyString.substring(0, 10)); // indexEnd > anystring.length
- indexStart || indexEnd > str.length 인 경우, 인덱스를 str.length 로 처리
위의 index가 문자열의 길이보다 큰 경우 문자열의 길이로 처리하는 개념이 헷갈려서 다시 정리해 보자면,
1) indexStart 와 indexEnd 가 모두 str.length 보다 큰 경우와,
2) indexStart 만 str.length 보다 큰 경우로 나눠서 생각해 볼 수 있다.
let anyString = 'Mozilla'; // anyString.length = 7
// case 1. indexStart 와 indexEnd 가 모두 7보다 큰 경우
// 이 경우 두 인덱스 모두 anyString.length 인 7로 처리되기 때문에
// 다시 indexStart == indexEnd 의 케이스가 되어 빈 문자열이 반환된다.
console.log(anyString.substring(8, 9));
console.log(anyString.substring(7, 7)); // Display '';
// case 2-1. indexStart 만 7보다 큰 경우
// 이 경우 indexStart만 anyString.length 인 7로 처리되고,
// 다시 7인 indexStart 가 indexEnd 보다 큰 경우 두 자리를 바꿔서 처리되며,
// case 2-2. 만약 indexEnd 도 7인 경우에는 case 1과 마찬가지로 빈 문자열이 반환된다.
console.log(anyString.substring(8, 5));
console.log(anyString.substring(7, 5));
console.log(anyString.substring(5, 7)); // Display 'la';
console.log(anyString.substring(8, 7));
console.log(anyString.substring(7, 7)); // Display '';