본문 바로가기
01_PROJECT/OBJECT _2023

[ JavaScript ] substr() is deprecated -> substring() 문자열 일부 추출하기

by zestlumen 2023. 8. 2.

권장되지 않는 substr() 메서드는 레거시 메서드

어디서 봤는지는 모르겠지만 substr()메서드를 썼다가 

코드 위에 밑줄이 그어지며 마우스를 올리니 Deprecated Code라는 안내가 나타났다.

 

 

2021년 9월 기준으로 substr()메서드는 더 이상 권장되지 않는 레거시 메서드로 간주되었고

substring()메서드가 대체할 수 있게 되었다.

 

*레거시(legacy) 메서드란?

lecacy는 '전통,유산,옛날의 것'등을 의미하며 기술적인 의미에서 더 이상 권장되지 않거나

오래되어서 현재의 기술과는 맞지 않는 메서드를 의미합니다.

 

 substring() 메서드

 

string.substring(startIndex, endIndex)

 

  • startIndex 시작 인덱스와 endIndex 끝 인덱스를 사용해 추출할 부분을 지정합니다.
  • startIndex가 endIndex보다 크면  두 인자가 자동으로 교환되어 처리된다.
  • substring()메서드는 문자열을 변경하는 것이 아니라 새로운 문자열을 반환한다.원본의 문자열은 변경되지 않고, substring()으로 얻은 문자열은 새로운 문자열이고 별개의 객체이다.
  • endIndex는 선택적으로 사용 가능, 지정하지 않을 시 문자열 끝까지를 의미한다.

 

 

위와 같은 코드는 17번째 인덱스부터 끝까지 부분 문자열을 추출하는 코드이다.

endIndex는 선택적으로 사용할 수 있고, 지정하지 않으면 문자열 끝까지 추출한다.

아래는 예시 코드와 그 결과이다.

 

const str = "Hello, this is a sample string.";
const result = str.substring(17);
console.log(result); // "sample string."

 

또한 문자열 길이보다 더 큰 인덱스, 존재하지 않는 인덱스를 넣거나

문자열의 길이와 같은 인덱스를 입력시에는 빈 문자열을 반환한다.

 

const str = "1234567890abcdef";
const result = str.substring(18);
console.log(result); // ""

 

 

const str = "abc";
const result = str.substring(3);
console.log(result); // ""