substring

  • 문법: str.substring(start[, end])
  • 문자열의 start부터 end 전까지 문자열의 부분 문자열을 반환하는 메서드이다.

substr

  • 문법: str.substr(start[, length])
  • 문자열에서 start에서 시작하여 length 갯수 만큼의 문자들을 반환한다.

slice

  • 문법: str.slice(start[, end])
  • 문자열의 start부터 end 전까지 문자열의 부분 새로운 문자열을 반환한다.
const str = "abcdefghi";

str.substring(1, 3); // "bc"
str.substr(1, 3); // "bcd"
str.slice(1, 3) // "bc"

str.substring(3); // "defghi" (end가 생략될 경우, 끝까지 반환)
str.substr(3); // "defghi" (length가 생략될 경우, 끝까지 반환)
str.slice(3); // "defghi" (end가 생략될 경우, 끝까지 반환)

str.substring(-4); // "fghi" (음수를 입력할 경우, 뒤에서부터 음수의 절대값만큼 거꾸로 계산하여 반환)
str.subslice(-4); // "fghi" (음수를 입력할 경우, 뒤에서부터 음수의 절대값만큼 거꾸로 계산하여 반환)

⭐️ substring과 slice의 차이점

start가 end보다 클 경우

  • substring은 start 값과 end 값을 바꾸어서 처리한다.
  • slice는 빈문자열을 반환한다.
const str = "abcdefghi";

str.substring(3, 1); // "bc" (substring(1, 3))
str.slice(3, 1) // ""

start 또는 end가 음수일 경우

  • substring은 음수는 0으로 계산한다.
  • slice는 string의 가장 뒤에서 음수의 절대값만큼 거꾸로 계산하여 반환한다.
const str = "abcdefghi";

str.substring(-4); // "abcdefghi" (str.substring(0))
str.substring(-4, -2); // "" (str.substring(0, 0))
str.substring(0, -2); // "" (str.substring(0, 0))
str.substring(-4); // "abcdefghi" (str.substring(0))

str.slice(-4); // "fg"
str.slice(-4, -2); // "fghi"
str.slice(0, -2); // "abcdefg"