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 '';